- From: Norman Walsh <Norman.Walsh@Sun.COM>
- Date: Thu, 20 Jul 2006 16:53:08 -0400
- To: public-xml-processing-model-wg@w3.org
- Message-ID: <87u05cj8wb.fsf@nwalsh.com>
/ Alex Milowski <alex@milowski.org> was heard to say:
| Norman Walsh wrote:
|> With that in mind, we could do it like this:
|>
|> <p:pipeline>
|> <!-- accept a document, a schema, and a stylesheet. -->
|> <!-- validate, transform, and return the result -->
|> <p:declare-input-port port="document" name="xmlfile"/>
|> <p:declare-input-port port="schema" name="xsdfile"/>
|> <p:declare-input-port port="stylesheet" name="xslfile"/>
|> <p:declare-output-port port="result" name="output"/>
|>
|> <p:step kind="validate">
|> <p:input port="document" from="xmlfile"/>
|> <p:input port="schema" from="xsdfile"/>
|> <p:output port="result" name="validxml"/>
|> </p:step>
|>
|> <p:step kind="xslt">
|> <p:input port="document" from="validxml"/>
|> <p:input port="stylesheet" from="xslfile"/>
|> <p:output port="result" to="output"/>
|> </p:step>
|> <p:pipeline>
|
| OK. I'm quite happy with this.
|
|> Or we could say:
|>
|> <p:pipeline>
|> <!-- accept a document, a schema, and a stylesheet. -->
|> <!-- validate, transform, and return the result -->
|> <p:declare-input-port port="document" name="xmlfile"/>
|> <p:declare-input-port port="schema" name="xsdfile"/>
|> <p:declare-input-port port="stylesheet" name="xslfile"/>
|> <p:declare-output-port port="result" name="output"/>
|>
|> <p:step kind="validate">
|> <p:input port="document" from="xmlfile"/>
|> <p:input port="schema" from="xsdfile"/>
|> <p:output port="result" to="styler"/>
|> </p:step>
|
| I'm confused by the 'to' value of 'styler' above. That isn't defined
| in this pipeline example.
Indeed, I meant to add:
|> <p:step kind="xslt">
|> <p:input port="document"/>
name="styler"
to the input port on the XSLT process.
|> <p:input port="stylesheet" from="xslfile"/>
|> <p:output port="result" to="output"/>
|> </p:step>
|> <p:pipeline>
|
|> Or we could do the naming "Richard's way":
|>
|> <p:pipeline name="pipe">
|> <!-- accept a document, a schema, and a stylesheet. -->
|> <!-- validate, transform, and return the result -->
|> <p:declare-input-port port="document"/>
|> <p:declare-input-port port="schema"/>
|> <p:declare-input-port port="stylesheet"/>
|> <p:declare-output-port port="result"/>
|>
|> <p:step kind="validate" name="validate">
|> <p:input port="document" from="pipe.document"/>
|> <p:input port="schema" from="pipe.schema"/>
|> <p:output port="result"/>
|> </p:step>
|>
|> <p:step kind="xslt" name="transform">
|> <p:input port="document" from="validate.result"/>
|> <p:input port="stylesheet" from="pipe.stylesheet"/>
|> <p:output port="result" to="pipe.result"/>
|> </p:step>
|> <p:pipeline>
|
| If we were to do this, we'd need to use something other than
| the "." for syntax. Personally, I'm not really moved by
| this idea.
I agree about the ".", I was just trying to avoid making up new stuff
where I didn't have to. I'm about 60/40 in favor of this approach
though.
|> <p:choose>
|> <p:declare-input-port port="testdocument" from="validxml"/>
|> <p:declare-output-port port="result" name="xformed"/>
|
| That would be a nice shortcut.
|
|>
|> Anyway, the important bits are:
|>
|> 1. Inside the p:choose, the only input ports available are the ones
|> locally declared. This makes p:choose a wholly self-contained
|> element which I really like.
|>
|> 2. If there's any p:when that does not have a binding to all of the
|> declared output-ports, that's a static error.
|
| Or that output is just not produced. We do have a choice there. It
| would be a static error if the output of the pipeline could not
| be produced. Having a choice where the output is option might be
| nice.
Well, in the interest of full specification right now, I think I'd
prefer an explicit binding of "/dev/null" to the output if you didn't
want any.
| The problem there would be that in some situations, a choice with
| 'when' clauses with no output would be allowed, but in others--where
| the output is traceable to the output of the pipeline, it would not.
| That might drive users insane.
Exactly.
|> Also, while I'm not a huge fan of the name "port", by using it I have
|> been able to reserve the attribute "name" exclusively for names that
|> authors invent in order to point at them which I think will make
|> Murray and Alex happy.
|
| Yes. This makes me happy. :)
Be seeing you,
norm
--
Norman Walsh
XML Standards Architect
Sun Microsystems, Inc.
Received on Thursday, 20 July 2006 20:53:27 UTC