[Bug 27648] [xslt 3.0] Dynamic Component References


Michael Kay <mike@saxonica.com> changed:

           What    |Removed                     |Added
             Status|NEW                         |ASSIGNED

--- Comment #3 from Michael Kay <mike@saxonica.com> ---
At the WG telcon today, the WG found itself leaning towards option 1(c), and
the editor was asked to draft a formal proposal. Here it is.

In 3.6.3, Named Components in Packages:

Delete accumulators from the list here:

The components which can be declared in one package and referenced in another
are: functions, named templates, attribute sets, modes, accumulators, and
global variables and parameters.

Add accumulators here ("keys and accumulators"):

In addition, keys are classified as named components ...

In "Examples of constructs that give rise to symbolic references..., ; and
XPath function calls referring to stylesheet functions or accumulator
functions.], delete "or accumulator functions".

In "Keys behave rather differently from other components. " generalize the text
so it covers accumulators as well as keys.

But observe that accumulators can also be referenced statically, in the
use-accumulators attribute of xsl:global-context-item and xsl:stream and
xsl:merge-source. These references are like other references to private
components: the declaration must be in the same package as the reference.

In visibility of components

Delete accumulators from the list of components that have a visibility

Delete xsl:accumulator from the content model of xsl:expose.

In accepting components

Delete xsl:accumulator from the content model of xsl:accept.

In Overriding Components from a Used Package

Delete xsl:accumulator from the content model of xsl:override.

Remove text referring specifically to overriding of accumulators, including the
rules for compatibility of accumulators.

Add a section Dynamic references to components


There are several functions in which a dynamically-evaluated QName is used to
identify a component: key(), accumulator-before/after(), function-lookup().

In all these cases, the set of components that are available to be referenced
are those that are declared in the package where this function call appears.
The reference succeeds irrespective of the visibility of the component, unless
the visibility is abstract (applies to functions only) in which case it is not
available to be referenced in this way. If (this also applies only to
functions) the relevant component has been overridden, the overriding
declarations are not considered. However, a function declared within
xsl:override will be found, provided the function-lookup call appears in the
same package as the xsl:override.

[Check and reiterate the rules for dynamic invocations of key(),
accumulator-before/after(), and function-lookup()].

In 3.6.5 Declarations Local to a Package

"Declarations of keys, decimal formats, namespace aliases..." - add

In 18.2.1 Delete the visibility attribute of xsl:accumulator

In 18.2.5, error condition [ERR XTDE3340], change "accumulator visible in the
package" to "accumulator declared in the package".

Delete section 18.2.7, but retain [ERR XTSE3350], moving it into 18.2.1.

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

Received on Thursday, 15 January 2015 22:02:04 UTC