- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Wed, 26 Sep 2007 22:25:09 +0100
- To: Michael Kay <mike@saxonica.com>
- CC: 'Norman Walsh' <ndw@nwalsh.com>, public-xml-processing-model-comments@w3.org
Hi Mike,
Thanks for taking the time to give us such a detailed review.
Michael Kay wrote:
>> | 6. Clarification. In 2.2, I don't understand this: "Within
>> a compound
>> | step, the declared outputs of the step can be connected to: * The
>> | output port of some contained step. * A fixed, inline document or
>> | sequence of documents. * A document read from a URI." How can an
>> | output of a step be a document read from a URI?
>>
>> Like this:
>>
>> <p:group>
>> <p:output port="out1"> ... </p:output>
>> <p:output port="out2">
>> <p:document href="someURI"/>
>> </p:output>
>> </p:group>
>>
>> It seems a little silly in isolation, but recall that all of
>> the branches of a choose have to have the same outputs. In
>> the otherwise branch, you may want to dummy up some of them.
>> Having allowed a fixed, inline binding, it seems arbitrary to
>> forbid a URI binding.
>
> I'm still confused. There's obviously something here I haven't grasped. I
> thought p:output was defining the destination for something that a step
> creates, and I don't see how that can be "a document read from a URI".
The content of <p:output> doesn't indicate where the document *goes*, it
indicates where the document bound to that output *comes from*. For
example, here's a (rather explicit) pipeline:
<p:pipeline name="simple-example">
<p:input port="source" />
<p:input port="config" />
<p:output port="result" />
<p:choose name="prefs">
<p:xpath-context>
<p:pipe step="simple-example" port="config" />
</p:xpath-context>
<p:when test="my:config/my:prefs">
<p:output port="result">
<p:pipe step="load-prefs" port="result" />
</p:output>
<p:load name="load-prefs">
<p:option href="my:config/my:prefs" />
</p:load>
</p:when>
<p:otherwise>
<p:output port="result">
<p:document href="default-prefs.xml" />
</p:output>
</p:otherwise>
</p:choose>
...
</p:pipeline>
It takes a source and a config, and chooses a preferences file based on
the <my:prefs> element in the configuration file; if there's no
preferences file named in the configuration file, it loads the default
preferences from default-prefs.xml.
In the <p:output> within the <p:when>, the <p:pipe> points to the output
of the load-prefs step (the content of the <p:output> indicates where
the document feeding the <p:output> comes *from*). Similarly, in the
<p:output> in the <p:otherwise>, the <p:document> points to an XML
document (again, the content of the <p:output> indicates where the
document feeding the <p:output> comes *from*).
If that makes sense, perhaps you have suggestions about how we can make
it clearer in the spec?
Cheers,
Jeni
--
Jeni Tennison
http://www.jenitennison.com
Received on Wednesday, 26 September 2007 21:25:25 UTC