Uploaded image for project: 'Xerces-C++'
  1. Xerces-C++
  2. XERCESC-2115

XSD xs:union always collapses whitespace

    XMLWordPrintableJSON

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&#x09;!" />
      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&#x09;!"/>
          </xs:restriction>
        </xs:simpleType>
      

      This does not help.

      Attachments

        Activity

          People

            Unassigned Unassigned
            TallBrian Brian Chapman
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: