[Bug 29996] RelaxNG EQName definition too loose.

https://www.w3.org/Bugs/Public/show_bug.cgi?id=29996

--- Comment #1 from Charles Foster <charles@cfoster.net> ---
I suggest replacing the definition of the eqname.datatype from:

eqname.datatype = xsd:QName | xsd:token { pattern = "Q\{[^{}]*\}\i\c*|\i\c*:.+"
}

And instead, use the following:

uri.qualified.name = xsd:token { pattern = "Q\{[^\{\}]*\}[\i-[:]][\c-[:]]*" } 
qname.strict = xsd:token { pattern = "[\i-[:]][\c-[:]]:[\i-[:]][\c-[:]]" }
eqname.datatype = xsd:QName | uri.qualified.name | qname.strict 

This would allow regular QNames, or Qualified names defined by
uri.qualified.name, or strict QNames defined by "qname.strict" and will not
allow "a:b:c".

On applying this locally to the RNC in the test suite, all XSLT tests validate
except from "xml-version-025.xsl". The reason why this fails is because Jing
(at least the version I have) does not support The RexEx notions of \i and \c
correctly.

I plan to submit a patch to Jing in order that \i and \c are properly
supported, which would result in "xml-version-025.xsl" passing, but for the now
at least, I believe the RelaxNG code written above is correct regardless of the
Jing RelaxNG implementation failing to validate a correct XSLT file.

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

Received on Thursday, 10 November 2016 15:49:45 UTC