- From: Toman, Vojtech <vojtech.toman@emc.com>
- Date: Wed, 5 Dec 2012 04:45:11 -0500
- To: "public-xml-processing-model-wg@w3.org" <public-xml-processing-model-wg@w3.org>
Hi all,
Nice proposal. Regarding 4, does inheritance work regardless of the parameters name? In other words, if I have:
<p:declare-step>
<p:option name="par" parameters="true"/>
<p:declare-step type="ex:step">
<p:option name="foo" parameters="true"/>
...
</p:declare-step>
<ex:step/>
</p:declare-step>
will "foo" inherit the bindings of "par" from the enclosing pipeline?
---
Regarding 5 and pipelines with anonymous parameters, how would you pass parameters to such a pipeline? If you cannot, why bother with creating an empty anonymous parameters option and inheriting from it?
---
But I am actually wondering if the distinction that something is a parameter is really that important. Perhaps we could get rid of the notion of parameters altogether and introduce instead some convenience rules for inheriting options/variables that would:
- allow for more or less the same "magic" that we expect with today's parameters
- reduce the amount of <p:with-option name="filter" select="$filter"/>
- and, related to the previous point, maybe get rid of some the problems with unbound options etc.
The following might be too radical/simplistic/problematic, but what about simply introducing an "inherit" attribute on the p:option/p:variable element? If the processor encounters an unbound option/variable while evaluating the pipeline, it would search for the nearest in-scope option/variable with the same name that was declared as inherit="true".
The main change for parameters would be that you would have to be careful about how you name the options (the names have to match), but suppose p:pipeline is equivalent to the following:
<p:declare-step>
<p:input port="source">
<p:output port="result"/>
<p:option name="parameters" inherit="true"/>
...
</p:declare-step>
then you will still be able to do things like:
<p:pipeline>
<p:xslt/>
</p:pipeline>
and be sure that the parameters passed to the pipeline will get passed to the p:xslt step.
It obviously has a whole number of implications (maybe it introduces even more magic than we have now) and I haven't put much thought to it, but my ideal still remains that there are no parameters and special parameter-related rules in XProc.
Regards,
Vojtech
--
Vojtech Toman
Consultant Software Engineer
EMC | Information Intelligence Group
vojtech.toman@emc.com
http://developer.emc.com/xmltech
> -----Original Message-----
> From: Norman Walsh [mailto:ndw@nwalsh.com]
> Sent: Wednesday, December 05, 2012 1:38 AM
> To: public-xml-processing-model-wg@w3.org
> Subject: Revisiting "fixing parameters"
>
> Hi folks,
>
> Here's my synthesis of the discussions at the face-to-face:
>
> 1. Adopt the XSLT 3.0 extensions to the data model and functions and
> operators to support maps
>
> 2. Parameters become a special kind of option:
>
> <p:declare-step type="p:xslt" xml:id="xslt">
> <p:input port="source" sequence="true" primary="true"/>
> <p:input port="stylesheet"/>
> <p:output port="result" primary="true"/>
> <p:output port="secondary" sequence="true"/>
> <p:option name="initial-mode"/>
> <p:option name="template-name"/>
> <p:option name="output-base-uri"/>
> <p:option name="version"/>
> <p:option name="parameters" parameters="true"/>
> </p:declare-step>
>
> The special flag is necessary because of the special "inheritance"
> rules for parameters.
>
> 3. Steps accept parameters just like options:
>
> <p:xslt parameters="{$parameters}"> ...
>
> or
>
> <p:xslt>
> ...
> <p:with-param name="parameters" select="map{'output-format' :=
> 'xhtml'}"/>
> </p:xslt>
>
> 4. If a step has no bindings for any of its parameters options, then
> the bindings of the nearest enclosing pipeline are inherited.
>
> 5. All pipelines have at least one parameters option. If a p:declare-
> step
> does not specify any parameter options, then the pipeline has an
> anonymous parameters option that can only be accessed via the
> inheritance mechanism.
>
> 6. If a pipeline declares more than one parameters option, then it is
> en error to rely on the inheritance; each contained step must
> specify
> a binding for each of its parameter options.
>
> 7. Inheritance can be explicitly blocked by specifying the empty
> sequence as the value of the parameters option.
>
> 8. The XML serialization of parameters is still useful, so we keep
> that.
>
> 9. If a map-type option is passed an XML document that is a c:param-
> set, then
> it's automatically converted to a map.
>
> Maps have to be immutable, so we'll need to work through some of the
> details with care.
>
> Be seeing you,
> norm
>
> --
> Norman Walsh
> Lead Engineer
> MarkLogic Corporation
> Phone: +1 512 761 6676
> www.marklogic.com
Received on Wednesday, 5 December 2012 09:47:04 UTC