[Bug 29146] New: [FO31] fn:transform options update


            Bug ID: 29146
           Summary: [FO31] fn:transform options update
           Product: XPath / XQuery / XSLT
           Version: Proposed Recommendation
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Functions and Operators 3.1
          Assignee: mike@saxonica.com
          Reporter: abel.braaksma@xs4all.nl
        QA Contact: public-qt-comments@w3.org
  Target Milestone: ---

Since we are approaching CR for XSLT 3.0, I had a look at the fn:transform
function and had a few observations / suggestions / improvements (mainly w.r.t.
XSLT 3.0):

1) there should only be one of stylesheet-location/-text/-node present

2) stylesheet-base-uri can be made relative to the current base-uri in scope,
or relative to the stylesheet-location or -node.

3) base-output-uri should be allowed to be a relative URI, as most processors
currently take it as defaulting to the current stylesheet-base-uri. This can
also be the default if absent.

4) source-node, text says "required unless initial-template is defined", it is
also not required if initial-function is defined.

5) source-node: is defined as node(), but can (in XSLT 3.0) be any item, or
even sequence of items. Perhaps combine with initial-match-selection (see

5) initial-mode: if supplied, initial-template *and* initial-function must be

7) initial-template: if supplied, initial-mode *and* initial-function must be

8) initial-function: if supplied, initial-mode *and* initial-template must be
absent and source-node will be ignored.

9) if *none* of initial-mode/-template/-function is supplied, and if a
source-node is supplied, initial-mode is the #unnamed mode, or the mode defined
on the outermost stylesheet element in [xsl:]default-mode. If no source-node is
supplied, initial-template is xsl:initial-template (these rules follow the
rules in XSLT 3.0, xsl:initial-template is meant to be the "int main()" of the

10) package-version: this is currently xs:decimal, but should be a string. XSLT
3.0 has a production for how the string is allowed to be created. It can take a
fixed version or a range. Valid are 1.1+, 2.3-alpha, 1.0-3.1 etc

11) package-version: if not supplied, default to "*"

12) package-name: if supplied, stylesheet-location/-node/-text should all be
absent and package-node must be present.

13) package-node: add a package-location and package-text similar to
stylesheet-location and stylesheet-text? At least one of those must be present
if package-name is specified.

14) packages, general. Since used packages are recognized by name (URI) it is
probably good to allow a parameter to set a map with key/value pairs for URI +
version number vs location.

15) packages: they can be precompiled or not. If not precompiled, it should be
made possible to set their static params (which are private to the package and
can collide).

16) initial-match-selection: it is now possible to have a different initial
match selection than a global context item. By default, they should (probably)
be set to source-node. The initial-match-selection can be any sequence of items
of any type, and can be empty. It only makes sense to specify it with

As an after-thought, perhaps we can add a required option that specifies the
requested type of invocation. For instance: invocation-type: mode | template |
function. And instead of initial-template/-function/-mode we could settle with
initial-component, which, if absent defaults to the defaults of that component
(#unnamed mode, xsl:initial-template, function invocation has no default).

You are receiving this mail because:
You are the QA Contact for the bug.

Received on Wednesday, 23 September 2015 18:40:33 UTC