Features: xslt-3

AB-xslt-043

Tests no output-base-uri: base uri of first doc on source is used. (3.0)

Test is expected to pass.

The pipeline

<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
                xmlns:t="http://xproc.org/ns/testsuite/3.0" version="3.0">
   <p:output port="result"/>
   <p:xslt version="3.0">
      <p:with-input port="source">
         <p:inline xml:base="http://xproc-test/xslt/">
            <doc/>
         </p:inline>
      </p:with-input>
      <p:with-input port="stylesheet">
         <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                         version="3.0">
            <xsl:template match="/">
               <xsl:result-document href="one.xml">
                  <one/>
               </xsl:result-document>
               <xsl:result-document href="two.xml">
                  <two/>
               </xsl:result-document>
            </xsl:template>
         </xsl:stylesheet>
      </p:with-input>
   </p:xslt>
   <p:for-each>
      <p:with-input pipe="secondary"/>
      <p:insert position="first-child" match="/*">
         <p:with-input port="insertion">
            <uri>{p:document-property(.,'base-uri')}</uri>
         </p:with-input>
      </p:insert>
   </p:for-each>
   <p:wrap-sequence wrapper="wrapper"/>
</p:declare-step>

Result

<wrapper xmlns:t="http://xproc.org/ns/testsuite/3.0">
   <one>
      <uri>http://xproc-test/xslt/one.xml</uri>
   </one>
   <two>
      <uri>http://xproc-test/xslt/two.xml</uri>
   </two>
</wrapper>

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="/wrapper">The document root is not 'wrapper'.</s:assert>
         <s:assert test="/wrapper/one/uri/text()='http://xproc-test/xslt/one.xml'">Element 'one' does not have a text child 'http://xproc-test/xslt/one.xml'.</s:assert>
         <s:assert test="/wrapper/two/uri/text()='http://xproc-test/xslt/two.xml'">Element 'two' does not have a text child 'http://xproc-test/two/one.xml'.</s:assert>
      </s:rule>
   </s:pattern>
</s:schema>

Revision history

10 Jun 2021, Achim Berndzen
Added attribute 'queryBinding' to schematron's schema.
04 Jul 2020, Achim Berndzen
Change test so it does not rely on document order of port "secondary".
20 Oct 2019, Achim Berndzen
Fixed test by setting document's base uri instead of root element's base uri.
04 Aug 2019, Achim Berndzen
Initial commit