- From: <bugzilla@jessica.w3.org>
- Date: Tue, 02 Feb 2016 03:09:46 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=29416
Bug ID: 29416
Summary: [QT3] re00054, a test with character class expression
[^-z], should throw FORX0002
Product: XPath / XQuery / XSLT
Version: Candidate Recommendation
Hardware: PC
OS: Windows NT
Status: NEW
Severity: normal
Priority: P2
Component: XQuery 3 & XPath 3 Test Suite
Assignee: oneil@saxonica.com
Reporter: abel.braaksma@xs4all.nl
QA Contact: public-qt-comments@w3.org
Target Milestone: ---
The whole expression in this test is "^(?:[^-z]+)$" (without quotes).
I am reporting this because
a) either the rules are not clear or ambiguous and the test is correct in one
reading of the spec
b) the test is not correct
In XSD 1.0, the production rules of [17] charRange apply. In the accompanying
text, the author states that the rules are ambiguous and then goes on that they
are not:
1) The [, ], - and \ characters are not valid character ranges;
A: this does not apply
2) The ^ character is only valid at the beginning of a ·positive character
group· if it is part of a ·negative character group·
A: this applies, and gets the meaning of negating the character group
3) The - character is a valid character range only at the beginning or end of a
·positive character group·.
A: ambiguous in this case, as the production rules do not allow this here.
[14]: posCharGroup ::= ( charRange | charClassEsc )+
[17]: charRange ::= seRange | XmlCharIncDash
[18]: seRange ::= charOrEsc '-' charOrEsc
[20]: charOrEsc ::= XmlChar | SingleCharEsc
[21]: XmlChar ::= [^\#x2D#x5B#x5D]
[22]: XmlCharIncDash ::= [^\#x5B#x5D]
Following this production rules, in part, we get:
4) it is a posCharGroup
5) it is a charRange
6) that range is "^" to "z"
Now back at rule (2) above. The "^" is only valid in this position if it is
also part of a negative character group.
All in all, I think if the intended meaning was "from '^' to 'z'" then it
should have been written as [\^-z], if it was "not from '^' to 'z'" then it
should have been written as [^^-z].
If the intention was "from ^ to z" then it should have been written as [\^-z]
If the intention was "not from ^ to z" then [^^-z] appears to be allowed
(though [^\^-z] makes more sense to me)
If the intention was "either ^, - or z", then [\^\-z]
If the intention was "not - or z", then [^\-z]
I think that the expression as written does not fit the production rules or
description and should raise FORX0002.
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Tuesday, 2 February 2016 03:09:49 UTC