Features: xslt-3

AB-xslt-094

Tests global-context-item is set correctly.

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-option name="global-context-item"
                     select="()"/>
      <p:with-input>
         <doc att="present"/>
      </p:with-input>
      <p:with-input port="stylesheet">
         <xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
            <xsl:variable name="gci" as="xs:string?">
               <xsl:try>
                  <xsl:sequence select="./doc/@att"/>
                  <xsl:catch>
                     <xsl:value-of select="'absent'"/>
                  </xsl:catch>
               </xsl:try>
            </xsl:variable>
            <xsl:template match="/">
               <result>
                  <xsl:value-of select="$gci"/>
               </result>
            </xsl:template>
         </xsl:stylesheet>
      </p:with-input>
   </p:xslt>
</p:declare-step>

Result

<result xmlns:t="http://xproc.org/ns/testsuite/3.0"
        xmlns:xs="http://www.w3.org/2001/XMLSchema">present</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">The document root is not 'result'.</s:assert>
         <s:assert test="result/text()='present'">The text in result is not 'present'.</s:assert>
      </s:rule>
   </s:pattern>
</s:schema>

Revision history

05 Jan 2025, Norm Tovey-Walsh
Change test to reflect changes adopted in 3.1. It’s no longer possible to distinguish between an absent global context item and explicitly setting it to the empty sequence.
10 Jun 2021, Achim Berndzen
Added attribute 'queryBinding' to schematron's schema.
11 Jun 2020, Achim Berndzen
Added tests for p:xslt with version="3.0".