The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Test correct behaviour on unions with a good schema
# This defines a union using inline simpleTypes.  This syntax isn't
# described in http://www.w3schools.com/schema/el_union.asp but it is
# presumably contained somewhere in the formal definitions and is
# recognised by other validators. In any case we've been using this format
# extensively for some time.

--- |
<?xml version="1.0" encoding='ISO-8859-1'?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:annotation>
    <xs:documentation>
      #########################################################################
      Union test
      #########################################################################
    </xs:documentation>
  </xs:annotation>
  
   
  
  <xs:element name="Message-Text">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="0"/>
        <xs:maxLength value="200"/>
      </xs:restriction>    
    </xs:simpleType>
  </xs:element>
  
    

  <xs:element name="decimal-or-tba">
    <xs:simpleType>
      <xs:union>
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="999999"/>
          </xs:restriction>
        </xs:simpleType>
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="TBA"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:union>
    </xs:simpleType>
  </xs:element>      

 
  <xs:element name="my-root">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Message-Text" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="decimal-or-tba" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
         
</xs:schema>

--- |
<my-root>
   <Message-Text>union test pass</Message-Text>
   <decimal-or-tba>99999</decimal-or-tba>
   <decimal-or-tba>TBA</decimal-or-tba>
</my-root>
--- >
PASS

--- |
<my-root>
   <Message-Text>union test fail 1</Message-Text>
   <decimal-or-tba>xyz</decimal-or-tba>
</my-root>
--- >
FAIL