CARVIEW |
Errata for XSL Transformations (XSLT) Version 2.0
10 April 2009
- Latest version:
- https://www.w3.org/XML/2007/qt-errata/xslt-errata.html
- Editor:
- Michael Kay, Saxonica https://www.saxonica.com/
Copyright © 2007-2009 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
Abstract
This document addresses errors in the XSL Transformations (XSLT) Version 2.0 Recommendation published on 23 January 2007. It records all errors that, at the time of this document's publication, have solutions that have been approved by the XSL Working Group. For updates see the latest version of that document.
The errata are numbered, and are listed in reverse chronological order of their date of origin. Each erratum is classified as Substantive, Editorial, or Markup. These categories are defined as follows:
Substantive: a change to the specification that may require implementations to change and that may change the outcome of a stylesheet or query.
Editorial: a clarification, correction of a textual error, or removal of an inconsistency, where the Working Group does not believe that the intent of the specification has changed. The erratum may affect implementations or user-written queries and stylesheets if the previous lack of clarity in the specification resulted in a misreading.
Markup: correction of formatting; the effect is cosmetic only.
Each entry contains the following information:
A description of the error.
A reference to the Bugzilla entry recording the original problem report, subsequent discussion, and resolution by the Working Group.
Key dates in the process of resolving the error.
Where appropriate, one or more textual changes to be applied to the published Recommendation.
Colored boxes and shading are used to help distinguish new text from old, however these visual clues are not essential to an understanding of the change. The styling of old and new text is an approximation to its appearance in the published Recommendation, but is not normative. Hyperlinks are shown underlined in the erratum text, but the links are not live.
A number of indexes appear at the end of the document.
Substantive corrections are proposed by the XSL Working Group (part of the XML Activity), where there is consensus that they are appropriate; they are not to be considered normative until approved by a Call for Review of Proposed Corrections or a Call for Review of an Edited Recommendation.
Please report errors in this document using W3C's public Bugzilla system (instructions can be found at https://www.w3.org/XML/2005/04/qt-bugzilla). If access to that system is not feasible, you may send your comments to the W3C XSLT/XPath/XQuery public comments mailing list, public-qt-comments@w3.org. It will be very helpful if you include the string [XTerrata] in the subject line of your report, whether made in Bugzilla or in email. Each Bugzilla entry and email message should contain only one error report. Archives of the comments and responses are available at https://lists.w3.org/Archives/Public/public-qt-comments/.
Status of this Document
This is a public draft. None of the errata reported in this document have been approved by a Call for Review of Proposed Corrections or a Call for Review of an Edited Recommendation. As a consequence, they must not be considered to be normative.
The Working Group does not intend to progress these errata to normative status; instead, it intends to publish a second edition of the Recommendation incorporating these errata, and to progress the second edition to normative status.
Table of Contents
Errata
XT.E36 Nothing is said about the default collation in the absence of the [xsl:]default-collation attribute
XT.E35 Error in example of xsl:processing-instruction
XT.E34 The description of xsl:number contains unspecific references to the Unicode specification
XT.E33 The rules determining when a key is evaluated in backwards-compatible mode are unclear
XT.E32 Editorial inconsistencies in the description of disable-output-escaping
XT.E31 There is no way for an overriding xsl:output or xsl:result-document instruction to indicate that the serialization parameters doctype-system or doctype-public should take the value "absent", overriding a previously specified explicit value.
XT.E30 The rule for numbering with level="any" gives a counter-intuitive result in the case where the selected node (or another counted node) matches the "from" pattern.
XT.E29 Examples of format-time use GMT+1 and GMT+01:00 interchangeably, and it is not clear which should be used when.
XT.E28 Error in example of inline schema.
XT.E27 Add warning that with character maps (as well as disable-output-escaping) there is no guarantee that the serialized output will be well formed or valid.
XT.E26 The description of the case-order attribute in xsl:sort needs to be clarified.
XT.E25 The specification of xsl:for-each-group needs to take into account the non-transitivity of the eq operator.
XT.E24 Examples of format-time use GMT+1 and GMT+01:00 interchangeably, and it is not clear which should be used when.
XT.E23 Error in example of format-date call using the Islamic calendar.
XT.E22 Error in example of format-time call.
XT.E21 There are two full stops after the description of error XTSE0530.
XT.E20 It is unclear what should happen when errors occur during xsl:message processing (in particular, serialization errors).
XT.E19 Current mode is underspecified: it is unclear what its value should be in all circumstances.
XT.E18 A change that clarified the namespace fixup rules was agreed during the Candidate Recommendation phase but was incorrectly applied.
XT.E17 Error XTTE0950 is listed in the wrong section of Appendix E
XT.E16 Error XTDE0485 should not be listed, as it can never happen.
XT.E15 The explanatory text for the type-available function misrepresents the use cases for this function.
XT.E14 This erratum defines a new system property ('supports-namespace-axis') which implementations may choose to provide to indicate whether they allow use of the namespace axis.
XT.E13 A comma has been doubled in 13.1.2.
XT.E12 Identity constraints are scoped to an element, so they should be applied when validating at element level.
XT.E11 The scope of a conditional sentence is unclear.
XT.E10 The specification does not state that duplicate attributes can be validated before they are discarded.
XT.E9 The rules for defaulting of the namespace attribute in xsl:import-schema are unclear.
XT.E8 The specification of xsl:for-each-group does not mention the impact of stable="no" when sorting groups.
XT.E7 A non-normative note concerning namespace fixup is potentially misleading.
XT.E6 There are no rules preventing misuse of the xmlns namespace.
XT.E5 The term "static error" is poorly defined.
XT.E4 The specification for format-date and related functions was intended to give implementations complete freedom to localize messages, but can be read as being over-prescriptive.
XT.E3 The specification does not constrain the value of the serialization parameter doctype-public to the values that will be accepted in well-formed XML.
XT.E2 The rules for trimming whitespace from attribute values in the stylesheet are unclear.
XT.E1 There are errors in the published schema for XSLT 2.0.
Indexes
XT.E36 - editorial
See Bug 6231
Description
Nothing is said about the default collation in the absence of the [xsl:]default-collation attribute
History
13 Mar 2009: Proposed
19 Mar 2009: Accepted
Change
Insert at the end of section 3.6.1 The default-collation attribute
The following:
In the absence of an [xsl:]default-collation
attribute, the default collation
may be established by the calling application in an
implementation-defined way. The
recommended default, unless the user chooses otherwise, is to
use the Unicode codepoint collation.
XT.E35 - editorial
See Bug 6282
Description
Error in example of xsl:processing-instruction
History
12 Feb 2009: Proposed
19 Mar 2009: Accepted
Change
In 11.6 Creating Processing Instructions (first example box, first code section):
Replace the text:
<xsl:processing-instruction name="xml-stylesheet" select="('href="book.css"', 'type="text/css")"/>
With:
<xsl:processing-instruction name="xml-stylesheet" select="('href="book.css"', 'type="text/css"')"/>
XT.E34 - editorial
See Bug 6186
Description
The description of xsl:number contains unspecific references to the Unicode specification
History
30 Jan 2009: Proposed
19 Mar 2009: Accepted
Changes
In 12.3 Number to String Conversion Attributes (second paragraph):
Replace the text:
The main attribute is
format
. The default value for theformat
attribute is1
. Theformat
attribute is split into a sequence of tokens where each token is a maximal sequence of alphanumeric characters or a maximal sequence of non-alphanumeric characters. Alphanumeric means any character that has a Unicode category of Nd, Nl, No, Lu, Ll, Lt, Lm or Lo. The alphanumeric tokens (format tokens) indicate the format to be used for each number in the sequence; in most cases the format token is the same as the required representation of the number 1 (one).With:
The main attribute is
format
. The default value for theformat
attribute is1
. Theformat
attribute is split into a sequence of tokens where each token is a maximal sequence of alphanumeric characters or a maximal sequence of non-alphanumeric characters. Alphanumeric means any character that has a Unicode category of Nd, Nl, No, Lu, Ll, Lt, Lm or Lo (see [Unicode] ). The alphanumeric tokens (format tokens) indicate the format to be used for each number in the sequence; in most cases the format token is the same as the required representation of the number 1 (one).In 12.3 Number to String Conversion Attributes (first bulleted list, first item):
Replace the text:
Any token where the last character has a decimal digit value of 1 (as specified in the Unicode character property database), and the Unicode value of preceding characters is one less than the Unicode value of the last character generates a decimal representation of the number where each number is at least as long as the format token. The digits used in the decimal representation are the set of digits containing the digit character used in the format token. Thus, a format token
1
generates the sequence0 1 2 ... 10 11 12 ...
, and a format token01
generates the sequence00 01 02 ... 09 10 11 12 ... 99 100 101
. A format token of١
(Arabic-Indic digit one) generates the sequence١
then٢
then٣
...
With:
Any token where the last character has a decimal digit value of 1 (as specified in the Unicode character property database, see [Unicode] ), and the Unicode value of preceding characters is one less than the Unicode value of the last character generates a decimal representation of the number where each number is at least as long as the format token. The digits used in the decimal representation are the set of digits containing the digit character used in the format token. Thus, a format token
1
generates the sequence0 1 2 ... 10 11 12 ...
, and a format token01
generates the sequence00 01 02 ... 09 10 11 12 ... 99 100 101
. A format token of١
(Arabic-Indic digit one) generates the sequence١
then٢
then٣
...
In A.1 Normative References, in its correct alphabetical position, add a reference to The Unicode Standard, using the same form of words as appears in the XPath 2.0 specification. Note that this reference advises implementors to use the latest version of the Unicode specification.
XT.E33 - editorial
See Bug 6164
Description
The rules determining when a key is evaluated in backwards-compatible mode are unclear
History
30 Jan 2009: Proposed
19 Mar 2009: Accepted
Change
In 16.3.2 The key Function (sixth paragraph):
Replace the text:
Different rules apply when backwards compatible
behavior is enabled. Specifically, if any of the xsl:key
elements in the definition of the
key enables backwards compatible behavior, then the value of the
key specifier and the value of the second argument of the
key
function are both converted after atomization to a sequence of strings, by
applying a cast to each item in the sequence, before performing the comparison.
With:
Different rules apply when backwards compatible
behavior is enabled. A key (that is, a set of xsl:key
declarations
sharing the same key name) is processed in backwards compatible mode if any of the xsl:key
elements
in the definition of the key enables backwards compatible behavior. When a
key is processed in backwards compatible mode, then:
The result of evaluating the key specifier in any
xsl:key
declaration having this key name is converted after atomization to a sequence of strings, by applying a cast to each item in the sequence.When the first argument to the
key
function specifies this key name, then the value of the second argument is converted after atomization to a sequence of strings, by applying a cast to each item in the sequence.The values are then compared as strings.
XT.E32 - editorial
See Bug 6140
Description
Editorial inconsistencies in the description of disable-output-escaping
History
30 Jan 2009: Proposed
19 Mar 2009: Accepted
Changes
In 20.2 Disabling Output Escaping (fifth paragraph):
Replace the text:
An
xsl:value-of
orxsl:text
element may have adisable-output-escaping
attribute; the allowed values areyes
orno
. The default isno
; if the value isyes
, then every character in the text node generated by evaluating thexsl:value-of
orxsl:text
element should have thedisable-output
property set.With:
An
xsl:value-of
orxsl:text
element may have adisable-output-escaping
attribute; the allowed values areyes
orno
. The default isno
; if the value isyes
, then every character in the text node generated by evaluating thexsl:value-of
orxsl:text
element should have thedisable-escaping
property set.In J.1.4 Incompatibility in the Absence of a Schema (first numbered list, twentieth item):
Replace the text:
20
An erratum to XSLT 1.0 specified what has become known as "sticky disable-output-escaping": specifically, that it should be possible to use
disable-output-escaping
when writing a node to a temporary tree, and that this information would be retained for use when the same node was later copied to a final result tree and serialized. XSLT 2.0 no longer specifies this behavior (though it permits it, at the discretion of the implementation). The use cases for this facility have been satisfied by a completely different mechanism, the concept of character maps (see 20.1 Character Maps).With:
20
An erratum to XSLT 1.0 specified what has become known as "sticky disable-output-escaping": specifically, that it should be possible to use
disable-output-escaping
when writing a node to a temporary tree, and that this information would be retained for use when the same node was later copied to a final result tree and serialized. XSLT 2.0 no longer specifies this behavior. The use cases for this facility have been satisfied by a completely different mechanism, the concept of character maps (see 20.1 Character Maps).
XT.E31 - substantive
See Bug 5893
Description
There is no way for an overriding xsl:output or xsl:result-document instruction to indicate that the serialization parameters doctype-system or doctype-public should take the value "absent", overriding a previously specified explicit value.
History
30 Jan 2009: Proposed
19 Mar 2009: Accepted
Changes
In 19.1 Creating Final Result Trees (second note):
Insert after the text:
Note:
In the case of the attributes
method
,cdata-section-elements
, anduse-character-maps
, the effective value of the attribute contains one or more lexical QNames. The prefix in such a QName is expanded using the in-scope namespaces for thexsl:result-document
element. In the case ofcdata-section-elements
, an unprefixed element name is expanded using the default namespace.The following:
In the case of the attributes
doctype-system
anddoctype-public
, setting the effective value of the attribute to a zero-length string has the effect of overriding any value for these attributes obtained from the output definition. The corresponding serialization parameter is not set (is "absent").In 20 Serialization (second bulleted list, fourth item):
Replace the text:
The value of the
doctype-system
attribute provides the value of thedoctype-system
parameter to the serialization method. By default, the parameter is not supplied.
With:
The value of the
doctype-system
attribute provides the value of thedoctype-system
parameter to the serialization method. If the attribute is absent or has a zero-length string as its value, then the serialization parameter is not set (is "absent").
In 20 Serialization (second bulleted list, fifth item):
Replace the text:
The value of the
doctype-public
attribute provides the value of thedoctype-public
parameter to the serialization method. By default, the parameter is not supplied.
With:
The value of the
doctype-public
attribute provides the value of thedoctype-public
parameter to the serialization method. If the attribute is absent or has a zero-length string as its value, then the serialization parameter is not set (is "absent").The value of
doctype-public
must conform to the rules for a PubidLiteralXML (see [XML 1.0] ).
XT.E30 - substantive
See Bug 5849
Description
The rule for numbering with level="any" gives a counter-intuitive result in the case where the selected node (or another counted node) matches the "from" pattern.
History
30 Jan 2009: Proposed
19 Mar 2009: Accepted
Change
In 12.2 Numbering based on Position in a Document (fourth bulleted list, second item, second paragraph):
Replace the text:
$S/(preceding::node()|ancestor::node())[matches-from(.)][last()]
With:
$S/(preceding::node()|ancestor-or-self::node())[matches-from(.)][last()]
XT.E29 - substantive
See Bug 5308
See Bug 5309
Description
Examples of format-time
use GMT+1 and GMT+01:00 interchangeably,
and it is not clear which should be used when. It is also unclear whether "Z" or "+00:00" should be
used for the UTC timezone. (Supersedes erratum E24)
History
30 Jan 2009: Proposed
19 Mar 2009: Accepted
Changes
In 16.5.1 The Picture String (first table, first table body, fifteenth row, second column):
Replace the text:
timezone as a time offset using GMT, for example GMT+1 With:
timezone as a time offset using GMT, for example GMT+1 or GMT-05:00. For this component there is a fixed prefix of GMT
, or a localized variation thereof for the chosen language, and the presentation modifier controls the representation of the signed time offset that follows.In 16.5.1 The Picture String (fifteenth paragraph):
Replace the text:
If the minumum and maximum width are unspecified, then the output uses as many characters as are required to represent the value of the component without truncation and without padding: this is referred to below as the full representation of the value.
With:
If the minimum and maximum width are unspecified, then the output uses as many characters as are required to represent the value of the component without truncation and without padding: this is referred to below as the full representation of the value. For a timezone offset (component specifier
z
), the full representation consists of a sign for the offset, the number of hours of the offset, and if the offset is not an integral number of hours, a colon (:
) followed by the two digits of the minutes of the offset.In 16.5.1 The Picture String (seventeenth paragraph):
Replace the text:
If the full representation of the value is shorter than the specified minimum width, then the processor should pad the value to the specified width. For decimal representations of numbers, this should be done by prepending zero digits from the appropriate set of digit characters, or appending zero digits in the case of the fractional seconds component. In other cases, it should be done by appending spaces.
With:
If the full representation of the value is shorter than the specified minimum width, then the processor should pad the value to the specified width.
For decimal representations of numbers, this should be done by prepending zero digits from the appropriate set of digit characters, or appending zero digits in the case of the fractional seconds component.
For timezone offsets this should be done by first appending a colon (
:
) followed by two zero digits from the appropriate set of digit characters if the full representation does not already include a minutes component and if the specified minimum width permits adding three characters, and then if necessary prepending zero digits from the appropriate set of digit characters to the hour component.In other cases, it should be done by appending spaces.
Note:
Formatting of timezones is not fully defined by this specification. Some aspects of the formatting are implementation-dependent.
For component specifier "z", the choice between "GMT+2" and "GMT+02:00" is guided by the width specifier, as indicated above. The string "GMT" may be localized, for example to "UTC". The representation of the UTC timezone itself (that is, a timezone offset of zero) is not defined in this specification.
For component specifier "Z" with a numeric presentation modifier, the implementation may optionally use "Z" rather than "+00:00" to indicate UTC.
Component specifier "Z" with the presentation modifier "N" is used to request timezone names such as "PST" or "CET". Translation of a timezone offset into the name of a civil timezone can only be done heuristically. The implementation may use the
$country
argument as a guide to the civil timezones to match against; if$value
includes a date then the implementation may also use a database of daylight-savings-time changes to distinguish two timezone names, such as "EDT" and "AST", that have the same timezone offset.In 16.5.3 Examples of Date and Time Formatting (first example box, first table, first table body, nineteenth row, second column):
Replace the text:
format-time($t,"[H01]:[m01]:[s01] [z]", "en", (), ())
With:
format-time($t,"[H01]:[m01]:[s01] [z,6-6]", "en", (), ())
In 16.5.3 Examples of Date and Time Formatting (first example box, first table, first table body, twentieth row, first column):
Replace the text:
15.58 Uhr GMT+02:00
With:
15.58 Uhr GMT+2
XT.E28 - editorial
See Bug 6093
Description
Error in example of inline schema. The select expression of the variable needs to explicitly convert the supplied value to the type defined in the schema; declaring the type is not enough.
History
28 Sep 2008: Proposed
9 Oct 2008: Accepted
Change
In 3.14 Importing Schema Components (first example box, first code section):
Replace the text:
<xsl:import-schema> <xs:schema targetNamespace="https://localhost/ns/yes-no" xmlns:xs="https://www.w3.org/2001/XMLSchema"> <xs:simpleType name="local:yes-no"> <xs:restriction base="xs:string"> <xs:enumeration value="yes"/> <xs:enumeration value="no"/> </xs:restriction> </xs:simpleType> </xs:schema> </xsl:import-schema> <xs:variable name="condition" select="'yes'" as="local:yes-no"/>
With:
<xsl:import-schema> <xs:schema targetNamespace="https://localhost/ns/yes-no" xmlns:xs="https://www.w3.org/2001/XMLSchema"> <xs:simpleType name="local:yes-no"> <xs:restriction base="xs:string"> <xs:enumeration value="yes"/> <xs:enumeration value="no"/> </xs:restriction> </xs:simpleType> </xs:schema> </xsl:import-schema> <xs:variable name="condition" select="local:yes-no('yes')" as="local:yes-no"/>
XT.E27 - editorial
See Bug 5667
Description
Add warning that with character maps (as well as disable-output-escaping) there is no guarantee that the serialized output will be well formed or valid.
History
10 Jul 2008: Proposed
9 Oct 2008: Accepted
Changes
Insert at the end of section 20.1 Character Maps
The following:
Note:
When character maps are used, there is no guarantee that the serialized output will be well-formed XML (or HTML). Furthermore, the fact that the result tree was validated against a schema gives no guarantee that the serialized output will still be valid against the same schema. Conversely, it is possible to use character maps to produce schema-valid output from a result tree that would fail validation.
Insert at the end of section 20.2 Disabling Output Escaping
The following:
Note:
When disable-output-escaping is used, there is no guarantee that the serialized output will be well-formed XML (or HTML). Furthermore, the fact that the result tree was validated against a schema gives no guarantee that the serialized output will still be valid against the same schema. Conversely, it is possible to use disable-output-escaping to produce schema-valid output from a result tree that would fail validation.
XT.E26 - editorial
See Bug 5324
Description
The description of the case-order
attribute in xsl:sort
needs to
be clarified.
History
17 Jul 2008: Proposed
9 Oct 2008: Accepted
Change
In 13.1.3 Sorting Using Collations (first bulleted list, second item):
Insert after the text:
The case-order
attribute indicates whether
the desired collation should sort upper-case letters before
lower-case or vice versa. The
effective value of
the attribute must be either lower-first
(indicating
that lower-case letters precede upper-case letters in the collating
sequence) or upper-first
(indicating that upper-case
letters precede lower-case).
The following:
When lower-first
is requested, the
returned collation should have the property that when two strings differ only
in the case of one or more characters, then a string in which the first
differing character is lower-case should precede a string in which the
corresponding character is title-case, which should in turn precede a string in
which the corresponding character is upper-case. When upper-first is requested,
the
returned collation should have the property that when two strings differ only
in the case of one or more characters, then a string in which the first
differing character is upper-case should precede a string in which the
corresponding character is title-case, which should in turn precede a string in
which the corresponding character is lower-case.
So, for example, if lang="en"
, then A a B b
are sorted with
case-order="upper-first"
and a A b B
are sorted with case-order="lower-first"
.
As a further example, if lower-first is requested, then a sorted sequence might be "MacAndrew, macintosh, macIntosh, Macintosh, MacIntosh, macintoshes, Macintoshes, McIntosh". If upper-first is requested, the same sequence would sort as "MacAndrew, MacIntosh, Macintosh, macIntosh, macintosh, MacIntoshes, macintoshes, McIntosh"
XT.E25 - substantive
See Bug 5295
Description
The specification of xsl:for-each-group
needs to take into account
the non-transitivity of the eq
operator.
History
11 Jul 2008: Proposed
9 Oct 2008: Accepted
Changes
In 14.3 The xsl:for-each-group Element (first bulleted list, first item, third paragraph):
Insert after the text:
The number of groups will be the same as the number of distinct grouping key values present in the population.
The following:
If the population contains values of different numeric types that differ from each other by small amounts, then the
eq
operator is not transitive, because of rounding effects occurring during type promotion. The effect of this is described in 14.5 Non-Transitivity.Insert at the end of section 14 Grouping
The following:
14.5 Non-Transitivity
If the population contains values of different numeric types that differ from each other by small amounts, then the
eq
operator is not transitive, because of rounding effects occurring during type promotion. It is thus possible to have three values A, B, and C among the grouping keys of the population such thatA eq B
,B eq C
, butA ne C
.For example, this arises when computing
<xsl:for-each-group group-by="." select=" xs:float('1.0'), xs:decimal('1.0000000000100000000001', xs:double( '1.00000000001')">
because the values of type
xs:float
andxs:double
both compare equal to the value of typexs:decimal
but not equal to each other.In this situation the results must be equivalent to the results obtained by the following algorithm:
For each item I in the population in population order, for each of the grouping keys K for that item in sequence, the processor identifies those existing groups G such that the grouping key of the initial item of G is equal to K.
If there is exactly one group G, then I is added to this group, unless I is already a member of this group.
If there is no group G, then a new group is created with I as its first item.
If there is more than one group G (which can only happen in exceptional circumstances involving non-transitivity), then one of these groups is selected in an implementation-dependent way, and I is added to this group, unless I is already a member of this group.
The effect of these rules is that (a) every item in a non-singleton group has a grouping key that is equal to that of at least one other item in that group, (b) for any two distinct groups, there is at least one pair of items (one from each group) whose grouping keys are not equal to each other.
XT.E24 - substantive
Superseded by Erratum XT.E29
See Bug 5309
Description
Examples of format-time
use GMT+1 and GMT+01:00 interchangeably,
and it is not clear which should be used when.
History
11 Jul 2008: Proposed
9 Oct 2008: Accepted
Changes
In 16.5.1 The Picture String (first table, first table body, fifteenth row, second column):
Replace the text:
timezone as a time offset using GMT, for example GMT+1 With:
timezone as a time offset using GMT, for example GMT+1 or GMT-05:00. For this component there is a fixed prefix of GMT
, or a localized variation thereof for the chosen language, and the presentation modifier controls the representation of the signed time offset that follows.In 16.5.1 The Picture String (fifteenth paragraph):
Replace the text:
If the minumum and maximum width are unspecified, then the output uses as many characters as are required to represent the value of the component without truncation and without padding: this is referred to below as the full representation of the value.
With:
If the minimum and maximum width are unspecified, then the output uses as many characters as are required to represent the value of the component without truncation and without padding: this is referred to below as the full representation of the value. For a timezone offset (component specifier
z
), the full representation consists of a sign for the offset, the number of hours of the offset, and if the offset is not an integral number of hours, a colon (:
) followed by the two digits of the minutes of the offset.In 16.5.1 The Picture String (seventeenth paragraph):
Replace the text:
If the full representation of the value is shorter than the specified minimum width, then the processor should pad the value to the specified width. For decimal representations of numbers, this should be done by prepending zero digits from the appropriate set of digit characters, or appending zero digits in the case of the fractional seconds component. In other cases, it should be done by appending spaces.
With:
If the full representation of the value is shorter than the specified minimum width, then the processor should pad the value to the specified width.
For decimal representations of numbers, this should be done by prepending zero digits from the appropriate set of digit characters, or appending zero digits in the case of the fractional seconds component.
For timezone offsets this should be done by first appending a colon (
:
) followed by two zero digits from the appropriate set of digit characters if the full representation does not already include a minutes component and if the specified minimum width permits adding three characters, and then if necessary prepending zero digits from the appropriate set of digit characters to the hour component.In other cases, it should be done by appending spaces.
In 16.5.3 Examples of Date and Time Formatting (first example box, first table, first table body, nineteenth row, second column):
Replace the text:
format-time($t,"[H01]:[m01]:[s01] [z]", "en", (), ())
With:
format-time($t,"[H01]:[m01]:[s01] [z,6-6]", "en", (), ())
In 16.5.3 Examples of Date and Time Formatting (first example box, first table, first table body, twentieth row, first column):
Replace the text:
15.58 Uhr GMT+02:00
With:
15.58 Uhr GMT+2
XT.E23 - editorial
See Bug 5853
Description
Error in example of format-date
call using the Islamic calendar.
History
10 Jul 2008: Proposed
9 Oct 2008: Accepted
Change
In 16.5.3 Examples of Date and Time Formatting (second example box, first table, first table body, first row, second column):
Replace the text:
format-date($d, "[D١] [Mn] [Y١]", "Islamic", "ar", "AH", ()) |
With:
format-date($d, "[D١] [Mn] [Y١]", "ar", "AH", ()) |
XT.E22 - editorial
See Bug 5571
Description
Error in example of format-time
call.
History
20 Mar 2008: Proposed
10 Jul 2008: Accepted
Change
In 16.5.3 Examples of Date and Time Formatting (first example box, first table, first table body, sixteenth row, second column):
Replace the text:
format-time($t, "[h]:[m01]:[s01] o'clock [PN] [ZN,*-3]",
"en") |
With:
format-time($t, "[h]:[m01]:[s01] o'clock [PN] [ZN,*-3]", "en", (), ()) |
XT.E21 - markup
See Bug 5482
Description
There are two full stops after the description of error XTSE0530.
History
20 Mar 2008: Proposed
9 Oct 2008: Accepted
Change
In 6.4 Conflict Resolution for Template Rules (first numbered list, second item, second paragraph):
Replace the text:
err:XTSE0530
The value of this attribute
[the priority
attribute of the xsl:template
element]for Appendix E
must conform to the rules for the xs:decimal
type defined in
[XML Schema Part 2]
. Negative values are permitted..
With:
err:XTSE0530
The value of this attribute
[the priority
attribute of the xsl:template
element]for Appendix E
must conform to the rules for the xs:decimal
type defined in
[XML Schema Part 2]
. Negative values are permitted.
XT.E20 - substantive
See Bug 5278
Description
It is unclear what should happen when errors occur during xsl:message processing (in particular, serialization errors).
History
20 Mar 2008: Proposed
9 Oct 2008: Accepted
Change
Insert at the end of section 17 Messages
The following:
Any dynamic error that occurs
while evaluating the select
expression or the
contained sequence constructor,
and any serialization error
that occurs while
processing the result, is treated as a
recoverable error even if the error
would not be recoverable under other circumstances. The
optional recovery
action is implementation-dependent.
Note:
An example of such an error is the serialization error that occurs when
processing the instruction <xsl:message select="@code"/>
(on the grounds that
free-standing attributes cannot be serialized). Making such errors recoverable
means that it is implementation-defined whether or not they are signaled to the
user and whether they cause termination of the transformation. If the processor
chooses to recover from the error, the content of any resulting message is
implementation-dependent.
One possible recovery action is to include a description of the error in the generated message text.
XT.E19 - substantive
See Bug 4843
Description
Current mode is underspecified: it is unclear what its value should be in all circumstances.
History
20 Mar 2008: Proposed
9 Oct 2008: Accepted
Changes
In 5.4.4 Additional Dynamic Context Components used by XSLT (first table, first table body, third row, fourth column):
Replace the text:
calls on stylesheet functions With:
calls on stylesheet functions, evaluation of global variables and stylesheet parameters, evaluation of the sequence constructor contained in xsl:key
orxsl:sort
. Clearing the current mode causes the current mode to be set to the default (unnamed) mode.In 6.5 Modes (eighth paragraph):
Replace the text:
[Definition] At any point in the processing of a stylesheet, there is a current mode. When the transformation is initiated, the current mode is the default mode, unless a different initial mode has been supplied, as described in 2.3 Initiating a Transformation. Whenever an
xsl:apply-templates
instruction is evaluated, the current mode becomes the mode selected by this instruction. When a stylesheet function is called, the current mode becomes the default mode. No other instruction changes the current mode. On completion of thexsl:apply-templates
instruction, or on return from a stylesheet function call, the current mode reverts to its previous value. The current mode is used when anxsl:apply-templates
instruction uses the syntaxmode="#current"
; it is also used by thexsl:apply-imports
andxsl:next-match
instructions (see 6.7 Overriding Template Rules).With:
[Definition] At any point in the processing of a stylesheet, there is a current mode. When the transformation is initiated, the current mode is the default mode, unless a different initial mode has been supplied, as described in 2.3 Initiating a Transformation. Whenever an
xsl:apply-templates
instruction is evaluated, the current mode becomes the mode selected by this instruction. When a stylesheet function is called, the current mode is set to the default mode. While evaluating global variables and parameters, and the sequence constructor contained inxsl:key
orxsl:sort
, the current mode is set to the default mode. No other instruction changes the current mode. The current mode while evaluating an attribute set is the same as the current mode of the caller. On completion of thexsl:apply-templates
instruction, or on return from a stylesheet function call, the current mode reverts to its previous value. The current mode is used when anxsl:apply-templates
instruction uses the syntaxmode="#current"
; it is also used by thexsl:apply-imports
andxsl:next-match
instructions (see 6.7 Overriding Template Rules).
XT.E18 - editorial
See Bug 3336
Description
A change that clarified the namespace fixup rules was agreed during the Candidate Recommendation phase but was incorrectly applied. (Note: this erratum incorporates change 5 of Erratum E6.)
History
7 Nov 2007: Proposed
15 Nov 2007: Accepted
Change
In 11.3 Creating Attribute Nodes Using xsl:attribute (twelfth paragraph):
Replace the text:
The prefix of the lexical QName
specified in the
name
attribute (or the absence of a prefix) is copied to the prefix part of the
expanded-QName
representing the name of the new attribute node. In the event of a conflict this prefix (or absence of a prefix)
may subsequently be changed
during the namespace fixup process (see 5.7.3 Namespace Fixup). If the attribute is in a non-null
namespace and no prefix is specified, then the namespace fixup process will invent a prefix.
With:
The prefix of the lexical QName specified in the
name
attribute (or the absence of a prefix) is copied to the prefix part of the
expanded-QName
representing the name of the new attribute node.
In the event of a conflict this prefix may subsequently be
added, changed, or removed during the namespace fixup process (see 5.7.3 Namespace Fixup).
If the attribute is in a non-null namespace and no prefix is specified,
then the namespace fixup process will invent a prefix.
The term conflict here
means any violation of the constraints defined in
[Data Model]
, for example the
use of the same prefix to refer to two different namespaces in the element and
in one of its attributes, the use of the prefix xml
to refer to a namespace
other than the XML namespace, or any use of the prefix xmlns
.
XT.E17 - markup
See Bug 4878
Description
Error XTTE0950 is listed in the wrong section of Appendix E
History
10 Oct 2007: Proposed
15 Nov 2007: Accepted
Change
In Appendix E, move error XTTE0950 from the Static Errors section to the Type Errors section.
XT.E16 - substantive
See Bug 3069
Description
Error XTDE0485 should not be listed, as it can never happen. (The change log in the Proposed Recommendation reported that this error had been removed, but the decision to delete it was not implemented.)
History
10 Oct 2007: Proposed
15 Nov 2007: Accepted
Change
In 5.7.3 Namespace Fixup (sixth paragraph):
Delete the text:
err:XTDE0485
It is a
non-recoverable dynamic error if namespace fixup is
performed on an element that contains among the typed values of the element and its attributes
two values of type xs:QName
or xs:NOTATION
containing conflicting namespace prefixes,
that is, two values that use the same prefix to refer to different namespace URIs.
XT.E15 - substantive
See Bug 4696
Description
The explanatory text for the type-available
function
misrepresents the use cases for this function. The effect of the erratum is to document
its limitations when used in a use-when
expression.
History
10 Oct 2007: Proposed
15 Nov 2007: Accepted
Changes
In 18.1.4 Testing Availability of Types (first paragraph):
Replace the text:
The
type-available
function can be used, for example with the[xsl:]use-when
attribute (see 3.12 Conditional Element Inclusion), to explicitly control how a stylesheet behaves if a particular schema type is not available in the static context.With:
The
type-available
function can be used to control how a stylesheet behaves if a particular schema type is not available in the static context.In 18.1.4 Testing Availability of Types (fifth paragraph):
Insert after the text:
err:XTDE1428
It is a non-recoverable dynamic error if the argument [passed to the
type-available
function]for Appendix E does not evaluate to a string that is a valid QName, or if there is no namespace declaration in scope for the prefix of the QName. If the processor is able to detect the error statically (for example, when the argument is supplied as a string literal), then the processor may optionally signal this as a static error.The following:
Note:
The
type-available
function is of limited use within an[xsl:]use-when
expression, because the static context for the expression does not include any user-defined types.
XT.E14 - substantive
See Bug 4546
Description
This erratum defines a new system property ('supports-namespace-axis') which implementations may choose to provide to indicate whether they allow use of the namespace axis.
History
10 Oct 2007: Proposed
7 Nov 2007: Amended
15 Nov 2007: Accepted
Change
In 16.6.5 system-property (first bulleted list):
Insert after the text:
xsl:version
, a number giving the version of XSLT implemented by the processor; for implementations conforming to the version of XSLT specified by this document, this is the string"2.0"
. The value will always be a string in the lexical space of the decimal data type defined in XML Schema (see [XML Schema Part 2] ). This allows the value to be converted to a number for the purpose of magnitude comparisons.xsl:vendor
, a string identifying the implementer of the processorxsl:vendor-url
, a string containing a URL identifying the implementer of the processor; typically this is the host page (home page) of the implementer's Web site.xsl:product-name
, a string containing the name of the implementation, as defined by the implementer. This should normally remain constant from one release of the product to the next. It should also be constant across platforms in cases where the same source code is used to produce compatible products for multiple execution platforms.xsl:product-version
, a string identifying the version of the implementation, as defined by the implementer. This should normally vary from one release of the product to the next, and at the discretion of the implementer it may also vary across different execution platforms.xsl:is-schema-aware
, returns the string"yes"
in the case of a processor that claims conformance as a schema-aware XSLT processor, or"no"
in the case of a basic XSLT processor.xsl:supports-serialization
, returns the string"yes"
in the case of a processor that offers the serialization feature, or"no"
otherwise.xsl:supports-backwards-compatibility
, returns the string"yes"
in the case of a processor that offers the backwards compatibility feature, or"no"
otherwise.
The following:
In addition, processors may support the following system property in the XSLT namespace. A processor that does not support this property will return a zero-length string if the property is requested.
xsl:supports-namespace-axis
, returns the string"yes"
in the case of a processor that offers the XPath namespace axis even when not in backwards compatible mode, or"no"
otherwise. Note that a processor that supports backwards compatible mode must support the namespace axis when in that mode, so this property is not relevant to that case.
XT.E13 - editorial
See Bug 4849
Description
A comma has been doubled in 13.1.2.
History
10 Oct 2007: Proposed
15 Nov 2007: Accepted
Change
In 13.1.2 Comparing Sort Key Values (sixth paragraph):
Replace the text:
In general, comparison of two ordinary values is
performed according to the rules of the
XPath lt
operator. To ensure a total ordering, the same
implementation of the
lt
operator must be used for all the comparisons: the one that is chosen
is the one appropriate to the most specific type to which all the values can be converted by subtype substitution
and/or type promotion. For example, if the sequence contains both xs:decimal
and xs:double
values, then the values are compared using xs:double
comparison, even when comparing two
xs:decimal
values.
NaN values, for sorting purposes, are considered to be equal to each other,
and less than any other numeric value. Special rules
also apply to the xs:string
and xs:anyURI
types, and types derived by restriction therefrom,,
as described in the next section.
With:
In general, comparison of two ordinary values is
performed according to the rules of the
XPath lt
operator. To ensure a total ordering, the same
implementation of the
lt
operator must be used for all the comparisons: the one that is chosen
is the one appropriate to the most specific type to which all the values can be converted by subtype substitution
and/or type promotion. For example, if the sequence contains both xs:decimal
and xs:double
values, then the values are compared using xs:double
comparison, even when comparing two
xs:decimal
values.
NaN values, for sorting purposes, are considered to be equal to each other,
and less than any other numeric value. Special rules
also apply to the xs:string
and xs:anyURI
types, and types derived by restriction therefrom,
as described in the next section.
XT.E12 - substantive
See Bug 4548
Description
Identity constraints are scoped to an element, so they should be applied when validating at element level. This change is worded as a "should" so that existing processors remain conformant.
History
8 May 2007: Proposed
21 Jun 2007: Amended
15 Nov 2007: Accepted
Change
In 19.2.1.3 The Validation Process (first bulleted list, second item):
Replace the text:
The validation rule "Validation Rule: Identity-constraint Satisfied" is not applied.
With:
The validation rule "Validation Rule: Identity-constraint Satisfied" should be applied.
XT.E11 - editorial
See Bug 4620
Description
The scope of a conditional sentence is unclear. It is possible to misread
the paragraph in section 2.4 that starts "If the initial template has
an as
attribute..." as if this condition applies to the whole paragraph,
whereas it actually applies only to the first sentence of the paragraph.
History
10 Jun 2007: Proposed
21 Jun 2007: Accepted
Change
In 2.4 Executing a Transformation (starting at third paragraph):
Replace the text:
If the initial template has an as
attribute, then the result
sequence of the initial template is checked against the required type in the
same way as for any other template. If this result sequence is non-empty, then it is used to construct
an implicit
final result tree,
following the rules described in 5.7.1 Constructing Complex Content:
the effect is as if the initial template T were called by an
implicit template of the form:
<xsl:template name="IMPLICIT"> <xsl:result-document href=""> <xsl:call-template name="T"/> </xsl:result-document> </xsl:template>
With:
The result sequence produced by evaluating the initial template is handled as follows:
If the initial template has an
as
attribute, then the result sequence of the initial template is checked against the required type in the same way as for any other template.If the result sequence is non-empty, then it is used to construct an implicit final result tree, following the rules described in 5.7.1 Constructing Complex Content: the effect is as if the initial template T were called by an implicit template of the form:
<xsl:template name="IMPLICIT"> <xsl:result-document href=""> <xsl:call-template name="T"/> </xsl:result-document> </xsl:template>
XT.E10 - substantive
See Bug 4600
Description
The specification does not state that duplicate attributes can be validated before they are discarded. This erratum clarifies that an error may be reported when a constructed attribute has an invalid value, even if the attribute is subsequently discarded as a duplicate.
History
6 Jun 2007: Proposed
21 Jun 2007: Accepted
Change
In 5.7.1 Constructing Complex Content (first numbered list, ninth item):
Replace the text:
If an attribute A in the result sequence has the same name as another attribute B that appears later in the result sequence, then attribute A is discarded from the result sequence.
With:
If an attribute A in the result sequence has the same name as another attribute B that appears later in the result sequence, then attribute A is discarded from the result sequence. Before discarding attribute A, the processor may signal any type errors that would be signaled if attribute B were not present.
XT.E9 - editorial
See Bug 4591
Description
The rules for defaulting of the namespace
attribute in xsl:import-schema
are unclear.
History
30 May 2007: Proposed
21 Jun 2007: Accepted
7 Nov 2007: Amended
15 Nov 2007: Accepted
Change
In 3.14 Importing Schema Components (fifth paragraph):
Replace the text:
If the xsl:import-schema
element contains an xs:schema
element, then
the schema-location
attribute must be absent, and the namespace
attribute must
either have the same value as the targetNamespace
attribute of the xs:schema
element (if present), or must be absent, in which case its effective value is that of the
targetNamespace
attribute of the xs:schema
element if present or the zero-length string otherwise.
With:
If the xsl:import-schema
element contains an
xs:schema
element, then the schema-location
attribute must be absent, and one of the following
must be true:
the
namespace
attribute of thexsl:import-schema
element and thetargetNamespace
attribute of thexs:schema
element are both absent (indicating a no-namespace schema), orthe
namespace
attribute of thexsl:import-schema
element and thetargetNamespace
attribute of thexs:schema
element are both present and both have the same value, orthe
namespace
attribute of thexsl:import-schema
element is absent and thetargetNamespace
attribute of thexs:schema
element is present, in which case the target namespace is as given on thexs:schema
element.
XT.E8 - editorial
See Bug 4589
Description
The specification of xsl:for-each-group
does not mention the impact of
stable="no"
when sorting groups. This erratum confirms that stable="no"
has the expected effect in this situation.
History
29 May 2007: Proposed
21 Jun 2007: Accepted
Change
In 14.3 The xsl:for-each-group Element (twenty-first paragraph):
Replace the text:
Otherwise, the xsl:sort
elements immediately within
the xsl:for-each-group
element define the processing
order of the groups (see 13 Sorting).
They do not affect the order of items within each group.
Multiple sort key components are allowed,
and are evaluated in major-to-minor
order. If two groups have the same values for all their sort key components,
they are processed in order of first appearance.
With:
Otherwise, the xsl:sort
elements immediately within
the xsl:for-each-group
element define the processing
order of the groups (see 13 Sorting).
They do not affect the order of items within each group.
Multiple sort key components are allowed,
and are evaluated in major-to-minor
order. If two groups have the same values for all their sort key components,
they are processed in order of first appearance if the
sort key specification
is stable, otherwise in an
implementation-dependent order.
XT.E7 - editorial
See Bug 4513
Description
A non-normative note concerning namespace fixup is potentially misleading. This erratum confirms
that the rules for choice of a prefix in xsl:element
and xsl:attribute
take precedence.
History
29 Apr 2007: Proposed
17 May 2007: Accepted
Change
In 11.7 Creating Namespace Nodes (first note, third paragraph):
Replace the text:
Namespace prefixes for element and attribute names are effectively established by the namespace fixup process described in 5.7.3 Namespace Fixup. The fixup process ensures that an element has in-scope namespace nodes for the namespace URIs used in the element name and in its attribute names, and the serializer will typically use these namespace nodes to determine the prefix to use in the serialized output. The fixup process cannot generate namespace nodes that are inconsistent with those already present in the tree. This means that it is not possible for the processor to decide the prefix to use for an element or for any of its attributes until all the namespace nodes for the element have been added.
With:
Namespace prefixes for element and attribute names are initially established by the rules of the instruction that creates the element or attribute node, and in the event of conflicts, they may be changed by the namespace fixup process described in 5.7.3 Namespace Fixup. The fixup process ensures that an element has in-scope namespace nodes for the namespace URIs used in the element name and in its attribute names, and the serializer will typically use these namespace nodes to determine the prefix to use in the serialized output. The fixup process cannot generate namespace nodes that are inconsistent with those already present in the tree. This means that it is not possible for the processor to decide the prefix to use for an element or for any of its attributes until all the namespace nodes for the element have been added.
XT.E6 - substantive
See Bug 4464
Description
There are no rules preventing misuse of the xmlns
namespace.
History
23 Apr 2007: Proposed
17 May 2007: Accepted
Changes
In 3.2 Reserved Namespaces (first bulleted list, fifth item):
Insert after the text:
The following:
The namespace
https://www.w3.org/2000/xmlns/
is reserved for use as described in [Namespaces in XML 1.0] . No element or attribute node can have a name in this namespace, and although the prefixxmlns
is implicitly bound to this namespace, no namespace node will ever define this binding.
In 11.2 Creating Element Nodes Using xsl:element (tenth paragraph):
Replace the text:
It is a non-recoverable dynamic error if the effective value of the
namespace
attribute [of thexsl:element
instruction]for Appendix E is not in the lexical space of thexs:anyURI
data type.With:
It is a non-recoverable dynamic error if the effective value of the
namespace
attribute [of thexsl:element
instruction]for Appendix E is not in the lexical space of thexs:anyURI
data type or if it is the stringhttps://www.w3.org/2000/xmlns/
.In 11.2 Creating Element Nodes Using xsl:element (eleventh paragraph):
Insert after the text:
The prefix of the lexical QName specified in the
name
attribute (or the absence of a prefix) is copied to the prefix part of the expanded-QName representing the name of the new element node. In the event of a conflict a prefix may subsequently be added, changed, or removed during the namespace fixup process (see 5.7.3 Namespace Fixup).The following:
The term conflict here means any violation of the constraints defined in [Data Model] , for example the use of the same prefix to refer to two different namespaces in the element and in one of its attributes, the use of the prefixxml
to refer to a namespace other than the XML namespace, or any use of the prefixxmlns
.In 11.3 Creating Attribute Nodes Using xsl:attribute (eleventh paragraph):
Replace the text:
It is a non-recoverable dynamic error if the effective value of the
namespace
attribute [of thexsl:attribute
instruction]for Appendix E is not in the lexical space of thexs:anyURI
data type.With:
It is a non-recoverable dynamic error if the effective value of the
namespace
attribute [of thexsl:attribute
instruction]for Appendix E is not in the lexical space of thexs:anyURI
data type or if it is the stringhttps://www.w3.org/2000/xmlns/
.In 11.3 Creating Attribute Nodes Using xsl:attribute (twelfth paragraph):
Insert after the text:
The prefix of the lexical QName specified in the
name
attribute (or the absence of a prefix) is copied to the prefix part of the expanded-QName representing the name of the new attribute node. In the event of a conflict this prefix (or absence of a prefix) may subsequently be changed during the namespace fixup process (see 5.7.3 Namespace Fixup). If the attribute is in a non-null namespace and no prefix is specified, then the namespace fixup process will invent a prefix.The following:
The term conflict here means any violation of the constraints defined in [Data Model] , for example the use of the same prefix to refer to two different namespaces in different attributes of the same element, the use of the prefixxml
to refer to a namespace other than the XML namespace, or any use of the prefixxmlns
.In 11.7 Creating Namespace Nodes (fourth paragraph):
Replace the text:
It is a non-recoverable dynamic error if the string value of the new namespace node [created using
xsl:namespace
]for Appendix E is not valid in the lexical space of the data typexs:anyURI
. [err:XTDE0835]With:
It is a non-recoverable dynamic error if the string value of the new namespace node is not valid in the lexical space of the data type
xs:anyURI
, or if it is the stringhttps://www.w3.org/2000/xmlns/
.In 5.7.3 Namespace Fixup (first bulleted list, fourth item):
Replace the text:
A namespace node must not have the name
xmlns
.With:
A namespace node must not have the name
xmlns
or the string valuehttps://www.w3.org/2000/xmlns/
.
XT.E5 - editorial
See Bug 2388
Description
The term "static error" is poorly defined. The concept is defined in terms of when it is detected, which is circular, given that the specification goes on to state requirements on processors to detect static errors before evaluation starts.
History
17 Apr 2007: Proposed
17 Apr 2007: Accepted
Change
In 2.9 Error Handling (first paragraph):
Replace the text:
[Definition] An error that is detected by examining a stylesheet before execution starts (that is, before the source document and values of stylesheet parameters are available) is referred to as a static error.
With:
[Definition] An error that can be detected by examining a stylesheet before execution starts (that is, before the source document and values of stylesheet parameters are available) is referred to as a static error.
XT.E4 - editorial
See Bug 2321
Description
The specification for format-date
and related functions was intended to
give implementations complete freedom to localize messages, but can be read
as being over-prescriptive.
History
17 Apr 2007: Proposed
17 Apr 2007: Accepted
Change
In 16.5.2 The Language, Calendar, and Country Arguments (second paragraph):
Replace the text:
If the fallback representation uses a different calendar
from that requested, the output string must be prefixed
with [Calendar: X]
where X
identifies the calendar actually used. The string Calendar
should be localized using the requested
language if available. If the fallback representation uses a different language from
that requested, the output string should be prefixed with [Language: Y]
where Y
identifies the language actually used. The string Language
may be localized in an
implementation-dependent way.
If a particular component of the value cannot be output in the
requested format, it should be output in the default format for that component.
With:
If the fallback representation uses a different calendar from that requested,
the output string must identify the calendar actually used, for example by
prefixing the string with [Calendar: X]
(where X is the calendar actually used),
localized as appropriate to the
requested language. If the fallback representation uses a different language
from that requested, the output string must identify the language actually
used, for example by prefixing the string with [Language: Y]
(where Y is the language
actually used) localized in an
implementation-dependent way.
If a particular component of the value cannot be output in
the requested format, it should be output in the default format for
that component.
XT.E3 - substantive
Superseded by Erratum XT.E31
See Bug 4372
Description
The specification does not constrain the value of the serialization parameter
doctype-public
to the values that will be accepted in well-formed XML.
The primary place for such rules is the Serialization specification, but this erratum
adds a sentence to the XSLT specification to make it clear that restrictions apply.
The change affects xsl:output
and xsl:result-document
.
A corresponding change is being made to the Serialization specification: see Serialization erratum E1.
History
16 Apr 2007: Proposed
15 Nov 2007: Accepted
13 Mar 2009: Superseded
Change
In 20 Serialization (second bulleted list, fifth item):
Insert after the text:
The value of the
doctype-public
attribute provides the value of thedoctype-public
parameter to the serialization method. By default, the parameter is not supplied.
The following:
The value of doctype-public
must conform to the rules
for a PubidLiteralXML
(see
[XML 1.0]
).
XT.E2 - substantive
See Bug 4315
Description
The rules for trimming whitespace from attribute values in the stylesheet are unclear.
History
3 Apr 2007: Proposed
17 Apr 2007: Accepted
Change
In 2.2 Notation (first bulleted list, third item, second paragraph):
Replace the text:
In all cases where this specification states that the value of an attribute must be one of a limited set of values, leading and trailing whitespace in the attribute value is ignored. In the case of an attribute value template, this applies to the effective value obtained when the attribute value template is expanded.
With:
Except where the set of allowed values of an attribute is specified using the italicized name string or char, leading and trailing whitespace in the attribute value is ignored. In the case of an attribute value template, this applies to the effective value obtained when the attribute value template is expanded.
XT.E1 - substantive
See Bug 4237
Description
There are errors in the published schema for XSLT 2.0. The corrected schema has been placed at https://www.w3.org/2007/schema-for-xslt20.xsd, overwriting the original, and the version in Appendix G needs to be updated accordingly.
History
16 Mar 2007: Proposed
17 Apr 2007: Accepted
Change
The changes made to the schema are as follows:
A global element definition for
xsl:document
has been added.The content model for
xsl:sequence
has been restricted to match the element proforma in the normative text.
The new schema replaces the schema published as Appendix G.
Index by affected section
2.2 Notation
XT.E2
2.4 Executing a Transformation
XT.E11
2.9 Error Handling
XT.E5
3.2 Reserved Namespaces
XT.E6
3.6.1 The default-collation attribute
XT.E36
3.14 Importing Schema Components
XT.E9 XT.E28
5.4.4 Additional Dynamic Context Components used by XSLT
XT.E19
5.7.1 Constructing Complex Content
XT.E10
5.7.3 Namespace Fixup
XT.E6 XT.E16
6.4 Conflict Resolution for Template Rules
XT.E21
6.5 Modes
XT.E19
11.2 Creating Element Nodes Using xsl:element
XT.E6
11.3 Creating Attribute Nodes Using xsl:attribute
XT.E6 XT.E18
11.6 Creating Processing Instructions
XT.E35
11.7 Creating Namespace Nodes
XT.E6 XT.E7
12.2 Numbering based on Position in a Document
XT.E30
12.3 Number to String Conversion Attributes
XT.E34
13.1.2 Comparing Sort Key Values
XT.E13
13.1.3 Sorting Using Collations
XT.E26
14 Grouping
XT.E25
14.3 The xsl:for-each-group Element
XT.E8 XT.E25
16.3.2 The key Function
XT.E33
16.5.1 The Picture String
XT.E24 XT.E29
16.5.2 The Language, Calendar, and Country Arguments
XT.E4
16.5.3 Examples of Date and Time Formatting
XT.E22 XT.E23 XT.E24 XT.E29
16.6.5 system-property
XT.E14
17 Messages
XT.E20
18.1.4 Testing Availability of Types
XT.E15
19.1 Creating Final Result Trees
XT.E31
19.2.1.3 The Validation Process
XT.E12
20 Serialization
XT.E3 XT.E31
20.1 Character Maps
XT.E27
20.2 Disabling Output Escaping
XT.E27 XT.E32
A.1 Normative References
XT.E34
E Summary of Error Conditions (Non-Normative)
XT.E17
G Schema for XSLT Stylesheets (Non-Normative)
XT.E1
J.1.4 Incompatibility in the Absence of a Schema
XT.E32
Index by Bugzilla entry
Bug #2321: XT.E4
Bug #2388: XT.E5
Bug #3069: XT.E16
Bug #3336: XT.E18
Bug #4237: XT.E1
Bug #4315: XT.E2
Bug #4372: XT.E3
Bug #4464: XT.E6
Bug #4513: XT.E7
Bug #4546: XT.E14
Bug #4548: XT.E12
Bug #4589: XT.E8
Bug #4591: XT.E9
Bug #4600: XT.E10
Bug #4620: XT.E11
Bug #4696: XT.E15
Bug #4843: XT.E19
Bug #4849: XT.E13
Bug #4878: XT.E17
Bug #5278: XT.E20
Bug #5295: XT.E25
Bug #5308: XT.E29
Bug #5324: XT.E26
Bug #5482: XT.E21
Bug #5571: XT.E22
Bug #5667: XT.E27
Bug #5849: XT.E30
Bug #5853: XT.E23
Bug #5893: XT.E31
Bug #6093: XT.E28
Bug #6140: XT.E32
Bug #6164: XT.E33
Bug #6186: XT.E34
Bug #6231: XT.E36
Bug #6282: XT.E35
Index by element
xsl:attribute: XT.E6 XT.E7 XT.E10 XT.E18
xsl:character-map: XT.E27
xsl:copy: XT.E12
xsl:copy-of: XT.E12
xsl:document: XT.E1
xsl:element: XT.E6 XT.E7 XT.E10 XT.E12
xsl:for-each-group: XT.E8 XT.E25
xsl:import-schema: XT.E9 XT.E28
xsl:key: XT.E33
xsl:message: XT.E20
xsl:output: XT.E3 XT.E27 XT.E31
xsl:processing-instruction: XT.E35
xsl:result-document: XT.E3 XT.E31
xsl:sequence: XT.E1
xsl:text: XT.E32
xsl:value-of: XT.E32
Index by function
format-date: XT.E4 XT.E23 XT.E24 XT.E29
format-dateTime: XT.E4 XT.E24 XT.E29
format-time: XT.E4 XT.E22 XT.E24 XT.E29
system-property: XT.E14
type-available: XT.E15
Index by error-code
XTDE0485: XT.E16
XTDE0835: XT.E6
XTSE0530: XT.E21
XTTE0950: XT.E17
Index by attribute
[xsl:]default-collation: XT.E36