[Bug 3123] What is an 'instruction' to element-available()?

http://www.w3.org/Bugs/Public/show_bug.cgi?id=3123





------- Comment #6 from mike@saxonica.com  2006-05-05 10:38 -------
I don't think there's anywhere in the spec that relies on LRE's being
instructions, and in fact we probably tend to think of them as not being
instructions. So I'll propose text accordingly.

(1) At the start of section 2.2, add a definition: "[Definition: an *XSLT
element* is an element in the _XSLT namespace_ whose syntax and semantics are
defined in this specification.]. For a non-normative list of XSLT elements, see
[Appendix D]." Link uses of the term to this definition where appropriate.

(2) At the start of section 2.4, change the definition of template rules to:

[Definition: A stylesheet contains a set of template rules (see 6 Template
Rules). A template rule has three parts: a _pattern_ that is matched against
nodes, a (possibly empty) set of _template parameters_, and a _sequence
constructor_ that is evaluated to produce a sequence of items.]

(3) In 2.4, replace the paragraph

[Definition: The elements appearing within a sequence constructor are referred
to as instructions.]

with

A sequence constructor is a sequence of sibling nodes in the stylesheet, which
may be _XSLT instructions_, _literal result elements_, text nodes, or
_extension instructions_. For further details, see [5.7]

[Definition: an *instruction* is either an XSLT instruction, which is an _XSLT
element_ whose syntax summary in this specification contains the annotation
<!-- category: instruction -->, or an _extension instruction_, which is an
element in a namespace that has been designated as an extension namespace (see
[18.2.1]).]

(3) In 3.2 (once), 5.2 (twice), 5.4.2 (once), replace "XSLT instruction" by
"XSLT element"

(4) In 18.2.2, replace the two paragraphs:

<old>
If the processor does not have an implementation of a particular extension
instruction available, then the element-available function must return false
for the name of the element. When such an extension instruction is evaluated,
then the processor  must perform fallback for the element as specified in
18.2.3 Fallback. An implementation must not signal an error merely because the
stylesheet contains an extension instruction for which no implementation is
available.

If the processor has an implementation of a particular extension instruction
available, then the element-available function must return true for the name of
the element.
</old>

by:

<new>
If the expanded QName is in the _XSLT namespace_, the function returns true if
and only if the expanded QName is the name of an _XSLT instruction_, that is,
an _XSLT element_ whose syntax summary in this specification classifies it as
an _instruction_.

  Note: although the result of calling this function when using a conformant
XSLT 2.0 processor is entirely predictable, the function is useful in cases
where the stylesheet might be executing under a processor that implements some
other version of XSLT with different rules.

If the expanded QName is not in the _XSLT namespace_, the function returns true
if and only if the processor has an implementation available of an _extension
instruction_ with the given expanded QName. This applies whether or not the
namespace has been designated as an _extension namespace_.

If the processor does not have an implementation of a particular extension
instruction available, and such an extension instruction is evaluated, then the
processor must perform fallback for the element as specified in 18.2.3
Fallback. An implementation must not signal an error merely because the
stylesheet contains an extension instruction for which no implementation is
available.
</new>

Received on Friday, 5 May 2006 10:38:15 UTC