p:choose-025 (AB)

Tests p:choose with different XPath contexts (ported from choose #004 of 1.0 test-suite)

Test ab-choose-025.xml is expected to pass.

The pipeline


        <p:declare-step xmlns:p="http://www.w3.org/ns/xproc" name="pipeline" version="3.0">
            <p:output port="result"/>
            <p:input port="source">
                <document xmlns="">
                    <title>Some Title</title>
                    <para>Some paragraph.</para>
                </document>
            </p:input>
            <p:input port="alternate">
                <document xmlns="">                                                                                                        
                    <para>Some alternate paragraph.</para>                                                                                      
                </document>
            </p:input>
            
            <p:choose>
                <p:when test="//title">
                    <p:with-input>
                        <p:pipe step="pipeline" port="alternate"/>
                    </p:with-input>
                    <p:output port="result"/>
                    <p:identity>
                        <p:with-input port="source">
                            <p:inline><p xmlns="">Alternate input port contains a //title element.</p></p:inline>
                        </p:with-input>
                    </p:identity>
                </p:when>
                <p:when test="//title">                                                                                         
                    <p:with-input>                                                                                             
                        <p:pipe step="pipeline" port="source"/>                                                                  
                    </p:with-input>                                                                                            
                    <p:output port="result"/>                                                                                     
                    <p:identity>                                                                                                  
                        <p:with-input port="source">                                                                                     
                            <p:inline><p xmlns="">Source input port contains a //title element.</p></p:inline>                                  
                        </p:with-input>                                                                                                  
                    </p:identity>                                                                                                 
                </p:when>   
                <p:otherwise>
                    <p:output port="result"/>
                    <p:identity>
                        <p:with-input port="source">
                            <p:inline><p xmlns="">no input contains a //title element.</p></p:inline>                                     
                        </p:with-input>
                    </p:identity>
                </p:otherwise>
            </p:choose>
        </p:declare-step>
    

Schematron validation


        <s:schema xmlns:s="http://purl.oclc.org/dsdl/schematron">
            <s:pattern>
                <s:rule context="/">
                    <s:assert test="/p">Root element is not 'p'.</s:assert>
                    <s:assert test="/p/text()='Source input port contains a //title element.'">Text in 'p' is not 'Source input port contains a //title element.'.</s:assert>
                </s:rule>
            </s:pattern>
        </s:schema>
    

Revision history

05 Apr 2019, Achim Berndzen

New tests