- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Fri, 24 Mar 2006 11:09:49 +0000
- To: public-xml-processing-model-wg@w3.org
Richard Tobin wrote:
> See http://www.cogsci.ed.ac.uk/~richard/pipeline.html
Thanks for posting this, Richard. It's very helpful to have something
concrete like this to discuss.
Some questions/comments:
Why do you say "Each port must be connected to exactly one other port."?
I see that you've suggested 'sink' and 'duplicator' components to
support occasions when you want to ignore some output or connect some
output to more than one input, but you wouldn't need these components if
you could simply connect each port to zero or more than one other port.
What's the rationale behind this constraint?
There seems to be a growing consensus within the group, reflected here,
that inputs and outputs accept/produce *documents* and can't
accept/produce document fragments (e.g. elements). I assume that they
also can't accept/produce external parsed entities (e.g. documents
without a document element). I accept that this might be a necessary
simplification for this version, but I think that we should have in the
back of our minds that to fully support XSLT and XQuery we really need
to pass document fragments and external parsed entities between components.
You talk about declaring the cardinality of the inputs/outputs a
component accepts/produces. Another thought, perhaps for a future
version, would be to provide more detail about what's expected/generated
by a particular component: perhaps giving the name of the document
element or even an entire schema that the documents adhere to. I'd like
to see us allow for that kind of extension if we don't support it in
this version.
I'm concerned about how we define parameters. In particular, I'm worried
about the XSLT case where one of the parameters for the component is a
set of QName/value pairs (the XSLT parameters). I guess that in this
proposal, you'd do that with a parameter called 'parameters' whose value
was a formatted string such as '{uri1}local1=value1;
{uri2}local2=value2', or we'd say that the XSLT parameters were encoded
in an XML document and passed as an *input*.
You say: "Except as described in conditionals, all components in a
pipeline are run (in particular, they do not get run only if input
arrives or output is requested)." I'm not sure of your intention here.
I'm worried that this constraint prevents implementations from caching
and reusing intermediate documents (if they can detect that the
information that led to the generation of those documents hasn't
changed). Perhaps we need to look at the question of whether components
can have side-effects to work out whether this is important or not.
That's enough for now.
Cheers,
Jeni
--
Jeni Tennison
http://www.jenitennison.com
Received on Friday, 24 March 2006 11:09:47 UTC