p:wrap-sequence 009 (AB)

Tests p:wrap-sequence

Test is expected to pass.

Input: source

<doc xmlns:t="http://xproc.org/ns/testsuite/3.0"/>

The pipeline

<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
                xmlns:t="http://xproc.org/ns/testsuite/3.0" name="pipeline" version="3.0">
   <p:input port="source"/>
   <p:output port="result"/>
   <p:identity name="pr">
      <p:with-input>
         <p:pipe step="pipeline" port="source"/>
         <p:pipe step="pipeline" port="source"/>
         <p:pipe step="pipeline" port="source"/>
         <p:pipe step="pipeline" port="source"/>
      </p:with-input>
   </p:identity>
   <p:wrap-sequence name="splitseq" wrapper="sequence"
                    group-adjacent="floor(position() div 2)"/>
   <p:wrap-sequence wrapper="result"/>
</p:declare-step>

Result

<result xmlns:t="http://xproc.org/ns/testsuite/3.0">
   <sequence>
      <doc/>
   </sequence>
   <sequence>
      <doc/>
      <doc/>
   </sequence>
   <sequence>
      <doc/>
   </sequence>
</result>

Schematron checks

<s:schema xmlns="http://www.w3.org/1999/xhtml"
          xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:t="http://xproc.org/ns/testsuite/3.0"
          queryBinding="xslt2">
   <s:pattern>
      <s:rule context="/">
         <s:assert test="result">Root element is not 'result'.</s:assert>
         <s:assert test="count(result/child::node())=3">Root element should have three children.</s:assert>
         <s:assert test="count(result/sequence)=3">All children of root element should be 'sequence'.</s:assert>
         <s:assert test="count(result/sequence[1]/child::node())=1">First sequence element should have one child.</s:assert>
         <s:assert test="count(result/sequence[2]/child::node())=2">Second sequence element should have two children.</s:assert>
         <s:assert test="count(result/sequence[3]/child::node())=1">Third sequence element should have one child.</s:assert>
         <s:assert test="result/sequence[1]/doc">First sequence element should have one 'doc' child.</s:assert>
         <s:assert test="count(result/sequence[2]/doc)=2">Second sequence element should have two 'doc' children.</s:assert>
         <s:assert test="result/sequence[3]/doc">Third sequence element should have one 'doc' child.</s:assert>
      </s:rule>
   </s:pattern>
</s:schema>

Revision history

16 Oct 2021, Norman Walsh
Remove spurious whitespace from input document.
10 Jun 2021, Achim Berndzen
Added attribute 'queryBinding' to schematron's schema.
02 Jun 2019, Achim Berndzen
Tests for p:wrap-sequence (Partly ported from 1.0)