- From: Norman Walsh <Norman.Walsh@Sun.COM>
- Date: Wed, 24 Jan 2007 12:04:16 -0500
- To: public-xml-processing-model-wg@w3.org
- Message-ID: <87ejpkuzjj.fsf@nwalsh.com>
The last time we talked about this at a telcon, the minutes[1] record
three options:
1. The status quo:
<p:choose name="version">
<p:input port="source">
<p:pipe step="prevstep" port="result"/>
</p:input>
<p:when test="/*[@version = 1]">
<p:output port="result">
<p:pipe step="v1valid" port="result"/>
</p:output>
<p:step type="p:validate" name="v1valid">...</p:step>
</p:when>
<p:when test="/*[@version = 2]">
<p:input port="source">
<p:pipe step="v2valid" port="result"/>
</p:input>
<p:output port="result">
<p:pipe step="v2valid" port="result"/>
</p:output>
<p:step type="p:validate" name="v2valid">...</p:step>
</p:when>
</p:choose>
(Yes, I've needlessly repeated the input on both the choose and the
second when in order to expose the general case)
2. A nested context with test on the when:
<p:choose name="version">
<p:xpath-context>
<p:pipe step="prevstep" port="result"/>
</p:xpath-context>
<p:when test="/*[@version = 1]">
<p:output port="result">
<p:pipe step="v1valid" port="result"/>
</p:output>
<p:step type="p:validate" name="v1valid">...</p:step>
</p:when>
<p:when test="/*[@version = 2]">
<p:xpath-context>
<p:pipe step="prevstep" port="result"/>
</p:xpath-context>
<p:output port="result">
<p:pipe step="v2valid" port="result"/>
</p:output>
<p:step type="p:validate" name="v2valid">...</p:step>
</p:when>
</p:choose>
3. A nested context with test on the context:
<p:choose name="version">
<p:xpath-context>
<p:pipe step="prevstep" port="result"/>
</p:xpath-context>
<p:when>
<p:xpath-context test="/*[@version = 1]">
<p:pipe step="prevstep" port="result"/>
</p:xpath-context>
<p:output port="result">
<p:pipe step="v1valid" port="result"/>
</p:output>
<p:step type="p:validate" name="v1valid">...</p:step>
</p:when>
<p:when>
<p:xpath-context test="/*[@version = 2]">
<p:pipe step="prevstep" port="result"/>
</p:xpath-context>
<p:output port="result">
<p:pipe step="v2valid" port="result"/>
</p:output>
<p:step type="p:validate" name="v2valid">...</p:step>
</p:when>
</p:choose>
It seems to me that one problem with option 3 is that it requires the
user to provide the xpath-context element in each and every when in
order to have a place to hang the test attribute.
On that basis, I think the real choice is between options 1 and 2
unless someone has a third option that I've forgotten to list.
Let's pick one tomorrow!
Be seeing you,
norm
[1] http://www.w3.org/XML/XProc/2006/12/21-minutes.html#item05
--
Norman Walsh
XML Standards Architect
Sun Microsystems, Inc.
Received on Wednesday, 24 January 2007 17:04:41 UTC