Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
3.1.4
-
None
-
None
-
Windows 7, likely also Mac and Linux but didn't check
Description
see: https://stackoverflow.com/questions/39755370/xerces-c-xml-xsd-union-always-collapsing-whitespace for longer discussion.
I find that the problem doesn't care what I union with, or that I union with anything at all. So the simplest demonstration is to add these definitions to the above XSD.
<xs:simpleType name="HellUnion"> <xs:union memberTypes="Hello" /> </xs:simpleType> <xs:element name="root2"> <xs:complexType> <xs:attribute name="stuff" type="HellUnion" /> </xs:complexType> </xs:element>
Then Xerces-C rejects this XML as not valid:
<?xml version="1.0" encoding="UTF-8" ?>
<root2 stuff="Hello World	!" />
I think the error message is enlightening:
value 'Hello World !' does not match any member types of the union
Notice the space before the '!' where the tab was previously.
Microsoft .Net runtime XML/XSD system reports it as valid.
I have tried adding whitespace=preserve to the "Hello" simple type definition:
<xs:simpleType name="Hello"> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> <xs:pattern value="Hello World	!"/> </xs:restriction> </xs:simpleType>
This does not help.