RE: Bug in the Schemas for schemas

> -----Original Message-----
> From:	Daniel Veillard [SMTP:veillard@redhat.com]
> Sent:	Wednesday, April 03, 2002 11:04 AM
> To:	W3C XML Schema Comments list
> Subject:	Bug in the Schemas for schemas
> 
>    Apparently the regular expressions given for matching XPath
> strings are incorrect:
> 
good catch...see below.

> XMLSchema.xsd around line 1061 (there is a similar problem for
> the "selector" definition).
> 
> -------------------
>       <xs:attribute name="xpath" use="required">
>        <xs:simpleType>
>         <xs:annotation>
>          <xs:documentation>A subset of XPath expressions for use
> in selectors</xs:documentation>
>          <xs:documentation>A utility type, not for public
> use</xs:documentation>
>         </xs:annotation>
>         <xs:restriction base="xs:token">
>          <xs:annotation>
>           <xs:documentation>The following pattern is intended to allow
> XPath
>                             expressions per the following EBNF:
>            Selector    ::=    Path ( '|' Path )*
>            Path    ::=    ('.//')? Step ( '/' Step )*
>            Step    ::=    '.' | NameTest
>            NameTest    ::=    QName | '*' | NCName ':' '*'
>                             child:: is also allowed
>           </xs:documentation>
>          </xs:annotation>
>          <xs:pattern 
> value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:
> )?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((c
> hild::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
>          </xs:pattern>
>         </xs:restriction>
>        </xs:simpleType>
>       </xs:attribute>
> -------------------
> 
>    Ah ... Back to the definition:
> 
> http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#nt-MultiCharEsc
>    \c  the set of name characters, those matched by NameChar
> 
>    Which point to:
> 
> http://www.w3.org/TR/2000/WD-xml-2e-20000814#NT-NameChar
>    [4]    NameChar   ::=    Letter | Digit  | '.' | '-' | '_' | ':' |
>                             CombiningChar | Extender
> 
>    and ':' is part of NameChar as defined by the XML specification.
> 
> XPath when defining the NameTest actually referenced the Namespace in XML
> REC
> to avoid this problem:
> 
>    http://www.w3.org/TR/xpath#NT-NameTest
> 
>    http://www.w3.org/TR/REC-xml-names/#NT-NCName
>    [4] NCName  ::= (Letter | '_') (NCNameChar)* /* An XML Name, minus the 
> ":" */
>    [5] NCNameChar  ::= Letter | Digit | '.' | '-' | '_' | CombiningChar | 
> Extender
> 
>    Conclusion:
>     - The Schemas for Schemas does not define a subset of XPath, damn...
> 
>    Suggestions:
>     - Change the definition to base it either on the XPath specification
> or
>       Namespace in XML specs references
>     - Change the regular expression occurences of "\i\c*"
> 
Yes, all occurances of "\i\c*" should be changed to "[\i-[:]][\c-[:]]*"
(that is, remove : from the set allowed characters).

pvb

p.s. that's going to make the regex REALLY ugly...as if it isn't ugly enough
to begin with :-)

Received on Wednesday, 3 April 2002 15:37:03 UTC