- From: Norman Walsh <ndw@nwalsh.com>
- Date: Thu, 14 Jun 2007 09:30:11 -0400
- To: public-xml-processing-model-wg@w3.org
- Message-ID: <87hcpa3bq4.fsf@nwalsh.com>
/ ht@inf.ed.ac.uk (Henry S. Thompson) was heard to say: | I can certainly live with this, and I agree that the basic analysis is | correct, but I have a few residual concerns: | | 1) We are grabbing another port name for pipeline use; Yes. There seem to be two possibilities: grab the name "parameters" or add some sort of 'type' attribute to inputs so that authors can indicate which one(s) are for parameters. I hadn't quite thought that all the way through. The pipeline processor needs to know what inputs are for parameters so that it can do error checking and potentially have a different defaulting story for them. | 2) I'm not sure about the whole defaulting situation. . . | | Let's look at the latter a bit. At least one possible story would be: | | a) If a step-type is not declared to take a 'parameters' input, then | an instance of that step only sees parameters explicitly specified | with <p:parameter> directly within that instance; | | b) If a step-type is declared to take a 'parameters' input, and a | binding for that port is given on an instance of that step, then | that instance sees all and only the parameters presented on that | port and the parameters explicitly specified with <p:parameter> | directly within that instance (and the latter take precedence); I'm with you on a) and b) | c) If a step-type is declared to take a 'parameters' input, and no | binding for that port is given on an instance of that step, then | that instance sees all and only the #pipeline-parameters and the | parameters explicitly specified with <p:parameter> directly within | that instance (and the latter take precedence). | | So you can 'protect' a step _type_, by not declaring a 'parameters' | input for it, but if a step type _is_ declared to have a 'parameters' | input port, then you have to do | | <p:input port="parameters"> | <p:empty/> | </p:input> | | to 'protect' an _instance_ of such a step type. I guess I think | that's about right. Or, alternatively, if you don't provide a binding for the parameters port, then the default is the same as a) (i.e., no parameters by default). In this case, you have to add a parameters port and <p:input port="parameters"> <p:pipe step="main" port="parameters"/> </p:input> if you want the pipeline parameters passed through. I think that's ok too. I expect that most pipelines, like most stylesheets, will never have any parameters: <p:pipeline name="main" xmlns:p="http://www.w3.org/2007/03/xproc"> <p:input port="source"/> <p:output port="result"/> <p:xinclude/> <p:xslt> <p:input port="stylesheet"> <p:document href="docbook.xsl"/> </p:input> </p:xslt> </p:pipeline> So when the author wants to allow them, he or she will have to add: <p:pipeline name="main" xmlns:p="http://www.w3.org/2007/03/xproc"> <p:input port="source"/> <p:output port="result"/> <p:input port="parameters" maybe-some-type="parameters"/> <!--this--> <p:xinclude/> <p:xslt> <p:input port="parameters"> <!--and this--> <p:pipe step="main" port="parameters"/> </p:input> <p:input port="stylesheet"> <p:document href="docbook.xsl"/> </p:input> </p:xslt> </p:pipeline> That doesn't seem like too large a burden. I suppose it's a little simpler if we say that there is exactly one parameter port and it's named "parameters" and you don't have to/may not declare it. There's definitely a little more complexity here, but I think I still find my arguments compelling. Certainly, with my implementor's hat on, I find them hugely compelling. Be seeing you, norm -- Norman Walsh <ndw@nwalsh.com> | The wonder is, not that the field of http://nwalsh.com/ | stars is so vast, but that man has | measured it.--Anatole France
Received on Thursday, 14 June 2007 13:30:22 UTC