go-xml
go-xml copied to clipboard
simplify some types of union
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>