Skip to content

Conversation

SoMuchForSubtlety
Copy link

This is a companion PR to #140

Unions that consist of basic types and complex types based on the same basic type can be replaced with just the basic type.

This:

<xs:element name="Type1">
    <xs:complexType>
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element name="Elem" type="redundantUnionType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:simpleType name="enumType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="A"/>
        <xs:enumeration value="B"/>
        <xs:enumeration value="C"/>
    </xs:restriction>
</xs:simpleType>

<xs:simpleType name="redundantUnionType">
    <xs:union memberTypes="enumType xs:string"/>
</xs:simpleType>

can be simplified to:

<xs:element name="Type1">
    <xs:complexType>
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element name="Elem" type="enumType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:simpleType name="enumType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="A"/>
        <xs:enumeration value="B"/>
        <xs:enumeration value="C"/>
    </xs:restriction>
</xs:simpleType>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant