- From: <Toman_Vojtech@emc.com>
- Date: Thu, 2 Apr 2009 03:52:02 -0400
- To: <public-xml-processing-model-comments@w3.org>
> > The description of p:choose says: > > The outputs of the p:choose are taken from the outputs of the > selected subpipeline. The p:choose has the same number of outputs as > the selected subpipeline with the same names. If the selected > subpipeline has a primary output port, the port with the same name > on the p:choose is also a primary output port. > > This is followed later by Example 7 which reads, in part: > > <p:choose name="version"> > <p:when test="/*[@version = 2]"> > <p:validate-with-xml-schema>... > </p:when> > > <p:when test="/*[@version = 1]"> > <p:validate-with-xml-schema>... > </p:when> > > <p:when test="/*[@version]"> > <p:identity/> > </p:when> > > <p:otherwise> > <p:output port="result"> > <!-- this output is necessary so that all the branches have > the same outputs; it'll never really matter because > we're just about to raise an error. --> > ... > > The comment in the otherwise suggests that the preceding p:when > statements have an output named result. This is partially supported > by section 2.3: > > Additionally, if a compound step has no declared outputs and the > last step in its subpipeline has an unbound primary output, then an > implicit primary output port will be added to the compound step (and > consequently the last step's primary output will be bound to it). > This implicit output port has no name. It inherits the sequence > property of the port bound to it. > > Except that 2.3 says the implicit output port has no name. > > Bleh. > > I'm tempted to change 2.3 to say that the implicit output port is > named "result". Either that, or our example has to be changed so that > every p:when explicitly declares an output named result. > One note: p:choose is a multi-container step, not a compound step in the traditional sense. I would therefore say that the text in section 2.3 does not apply to p:choose (and p:try as well)? Personally, I don't like giving the implicit output port a name. Of course, we have done this with p:pipeline ("source", "result") and p:viewport/p:for-each ("current"), but these cases seem a bit different to me to what you are proposing. I am afraid that giving the implicit output port of a compound step a name might introduce lots of confusing 'magic' in XProc code... Regards, Vojtech
Received on Thursday, 2 April 2009 07:53:22 UTC