Отображение нескольких анонимных перечислений в один тип - PullRequest
0 голосов
/ 29 июня 2019

Существует 3D сторона XSD Shemas и имеет несколько анонимных простых типов с тем же ограничением.

shema.xsd

<xs:complexType name="Type1">
    <xs:sequence>
            <xs:element name="property1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="1"/>
                        <xs:enumeration value="2"/>
                        <xs:enumeration value="3"/>
                        <xs:enumeration value="4"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="property2">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="1"/>
                        <xs:enumeration value="2"/>
                        <xs:enumeration value="3"/>
                        <xs:enumeration value="4"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
    </xs:sequence>
</xs:complexType>

Есть ли способ создать один enum без модификации shemas только с привязками? Текущее решение: создайте дополнительный простой тип для ограничения и сопоставьте его с перечислением через bindings.xml

edited_shemas.xsd

<xs:complexType name="Type1">
    <xs:sequence>
            <xs:element name="property1" type="AdditonalType">
            </xs:element>
            <xs:element name="property2" type="AdditonalType">
            </xs:element>
    </xs:sequence>
</xs:complexType>
<xs:simpleType name="AdditonalType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="1"/>
        <xs:enumeration value="2"/>
        <xs:enumeration value="3"/>
        <xs:enumeration value="4"/>
    </xs:restriction>
</xs:simpleType>

binding.xml

<jaxb:bindings node="./xs:simpleType[@name='AdditonalType']">
    <jaxb:typesafeEnumClass name="AdditonalEnum">
        <jaxb:typesafeEnumMember value="1" name="val_1" />
        <jaxb:typesafeEnumMember value="2" name="val_2" />
        <jaxb:typesafeEnumMember value="3" name="val_3" />
        <jaxb:typesafeEnumMember value="4" name="val_3" />
    </jaxb:typesafeEnumClass>
</jaxb:bindings>
...