- From: Costello, Roger L. <costello@mitre.org>
- Date: Thu, 18 Oct 2012 12:44:42 +0000
- To: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
Hi Folks, Proposition: A union of member types does not produce a union, it produces a sequence of member types. Proof: <xs:simpleType name="white-space-characters"> <xs:annotation> <xs:documentation> The space (SP, ASCII value 32) and horizontal tab (HTAB, ASCII value 9) characters are known as the white space characters, WSP. </xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:pattern value="[	 ]*" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="printable-characters"> <xs:annotation> <xs:documentation> The printable US-ASCII characters are the characters that have values between 33 and 126, inclusive. </xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:pattern value="[!-~]*" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="header-field-body-characters"> <xs:annotation> <xs:documentation> A field body may be composed of printable US-ASCII characters as well as the WSP. </xs:documentation> </xs:annotation> <xs:union memberTypes="printable-characters white-space-characters" /> </xs:simpleType> <xs:element name="header-field-body" type="header-field-body-characters" /> *Valid* instance document: <header-field-body>HelloWorld</header-field-body> *Valid* instance document: <header-field-body> </header-field-body> *Invalid* instance document: <header-field-body>Hello World</header-field-body> Therefore the union of printable-characters and white-space-characters does not yield a union of their value spaces; rather, it merely provides a sequence of two types. Ugh. So, how do I truly union printable-characters and white-space-characters? Of course, I could simply copy the regex pattern from printable-characters and white-space-characters and paste: <xs:simpleType name="header-field-body-characters"> <xs:annotation> <xs:documentation> A field body may be composed of printable US-ASCII characters as well as the WSP. </xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:pattern value="[	 !-~]*" /> </xs:restriction> </xs:simpleType> But that is awful as it is totally disconnected from printable-characters and white-space-characters. Any suggestions? /Roger
Received on Thursday, 18 October 2012 12:45:14 UTC