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 00:38:53 UTC