<?xml-stylesheet type="text/xsl" href="/style/testcase.xsl"?>
<t:test xmlns:t="http://xproc.org/ns/testsuite"
        xmlns:p="http://www.w3.org/ns/xproc"
        xmlns:c="http://www.w3.org/ns/xproc-step"
        xmlns:err="http://www.w3.org/ns/xproc-error">

  <t:title>Test parameters-002</t:title>

  <t:input port="source">
    <c:param-set>
      <c:param name="param1" value="value1"/>
      <c:param name="param2" namespace="http://www.example.com" value="value2"/>
      <c:param name="param1" value="valueX"/>
    </c:param-set>
  </t:input>
  
  <t:pipeline>
    <p:declare-step version='1.0' name="main">
      <p:input port="source"/>
      <p:output port="result"/>
      
      <p:parameters name="params">
        <p:input port="parameters">
          <p:pipe step="main" port="source"/>
        </p:input>
      </p:parameters>

      <!-- parameters are inherently unordered, but we want to force
           an order so that the test comes out right... -->
      
      <p:identity name="pick1">
        <p:input port="source" select="/c:param-set/c:param[@name='param1']">
          <p:pipe step="params" port="result"/>
        </p:input>
      </p:identity>
      
      <p:identity name="pick2">
        <p:input port="source" select="/c:param-set/c:param[@name='param2']">
          <p:pipe step="params" port="result"/>
        </p:input>
      </p:identity>
      
      <p:wrap-sequence wrapper="c:param-set">
        <p:input port="source">
          <p:pipe step="pick1" port="result"/>
          <p:pipe step="pick2" port="result"/>
        </p:input>
      </p:wrap-sequence>
      
    </p:declare-step>
</t:pipeline>

<t:output port="result">
  <c:param-set xmlns:c="http://www.w3.org/ns/xproc-step"><c:param value="valueX" namespace="" name="param1"/><c:param value="value2" namespace="http://www.example.com" name="param2"/></c:param-set>
</t:output>
</t:test>


