go-xml icon indicating copy to clipboard operation
go-xml copied to clipboard

simplify some types of union

Open SoMuchForSubtlety opened this issue 4 years ago • 0 comments

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>

SoMuchForSubtlety avatar Aug 08 '21 14:08 SoMuchForSubtlety