This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 30267 - [XSLT30] grammatical error in text
Summary: [XSLT30] grammatical error in text
Status: NEW
Alias: None
Product: XPath / XQuery / XSLT
Classification: Unclassified
Component: XSLT 3.0 (show other bugs)
Version: Recommendation
Hardware: PC Windows NT
: P2 normal
Target Milestone: ---
Assignee: Michael Kay
QA Contact: Mailing list for public feedback on specs from XSL and XML Query WGs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-06-14 11:40 UTC by Mukul Gandhi
Modified: 2019-02-20 00:18 UTC (History)
2 users (show)

See Also:


Attachments

Description Mukul Gandhi 2018-06-14 11:40:07 UTC
In the section, "15.5 Defining the Merge Keys" of XSLT 3.0 spec, there is one bullet point mentioned as following,

"For each integer J in 1..N, consider the set of xsl:merge-key elements that are in position J among the xsl:merge-key children of their parent xsl:merge-source element. All the xsl:merge-key elements in this set must have the same effective value for their lang, order, collation, case-order, and data-type attributes, where having the same effective value in this case means that either both attributes must be absent, or both must be present and evaluate to the same value; and in addition in the case of collation the absolute URI must be the same after resolving against the base URI."

The words "both" in above paragraph seems wrong. There are five attributes mentioned, and not two.

I suggest the rephrasing to following,

"For each integer J in 1..N, consider the set of xsl:merge-key elements that are in position J among the xsl:merge-key children of their parent xsl:merge-source element. All the xsl:merge-key elements in this set must have the same effective value for their lang, order, collation, case-order, and data-type attributes, where having the same effective value in this case means that either *all five of these* attributes must be absent, or *all five of these attributes* must be present and evaluate to the same value; and in addition in the case of collation the absolute URI must be the same after resolving against the base URI."

My suggestions are within "*" characters.
Comment 1 Michael Kay 2018-10-20 20:49:05 UTC
This proposed rephrasing is incorrect. A better rephrasing would be:

"For each integer J in 1..N, consider the set S of xsl:merge-key elements that are in position J among the xsl:merge-key children of their parent xsl:merge-source element. For each attribute A in the set lang, order, collation, case-order, and data-type, it must be the case that for any two elements s1 and s2 in S, the effective value of attribute A on s1 is the same as the effective value of attribute A on s2, where two attributes are said to have the same effective value if either (a) both attributes are absent, or (b) both attributes are present and evaluate to the same value; furthermore, in the case of the collation attribute, the absolute URI must be the same after resolving against the base URI."

(The text could be more liberal and allow an attribute to be defaulted on one element and given an explicit value equivalent to the default on another. But it doesn't attempt to allow that and the intent here is to clarify the spec, not to write a better spec.)
Comment 2 Abel Braaksma 2019-02-19 20:42:33 UTC
Note that a proposed erratum was drafted, E29, but it appears that something went wrong with the rendering, which shows:

Change

Expression ulist[2]/item[2]/p selects nothing

---

For reference, the HTML version of the erratum: https://htmlpreview.github.io/?https://github.com/w3c/qtspecs/blob/master/errata/xslt-30/html/xslt-30-errata.html#E29
Comment 3 Michael Kay 2019-02-20 00:18:55 UTC
The formatting of the erratum has been fixed.