Мне нужно повторно использовать тег состояния, который я создал в XSD. Например, в нашем заказе у нас есть несколько статусов. Состояние заказа на заказ, заказ грузового автомобиля и т. Д.Как ссылаться на элемент in и XSD и дать ему новое имя?
К сожалению, теги, которые необходимо использовать, к сожалению, не совпадают. Для автомобиля это carStatus, и для грузовика это truckStatus, но основной объект тот же. Это тег xs: string, который имеет перечисление COMPLETED, BUSY или AWAITING INFORMATION.
Теперь я не хочу иметь 16 тегов для 16 объектов (автомобиль, дорожка, чоппер ... -Status). Завтра, если мы добавим еще один статус, я должен перейти ко всем этим элементам и обновить его.
Мой XSD, где я ссылаться на GenericCodeStatus выглядит следующим образом
<xs:schema targetNamespace="http://www.myDomain.co.za/myCoreXsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mine="http://www.myDomain.co.za/myCoreXsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- Defining my Enum -->
<xs:element name="GenericCodeStatus">
<xs:annotation>
<xs:documentation>Generic code status</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="COMPLETED"/>
<xs:enumeration value="BUSY"/>
<xs:enumeration value="AWAITING INFORMATION"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<!-- Here I have mytag where I am referencing the genericCodeStatus -->
<xs:complexType name="MyTag1">
<xs:sequence>
<xs:element ref="mine:GenericCodeStatus"/>
</xs:sequence>
</xs:complexType>
Теперь дело в том, что я хочу иметь genericCodeStatus под MyTag1 иметь имя. Я пытался создать его с именем и типом тега (и я использую XML Spy в качестве редактора)
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://www.myDomain.co.za/myCoreXsd" xmlns:mine="http://www.myDomain.co.za/myCoreXsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- Defining my Enum -->
<xs:element name="GenericCodeStatus">
<xs:annotation>
<xs:documentation>Generic code status</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="COMPLETED"/>
<xs:enumeration value="BUSY"/>
<xs:enumeration value="AWAITING INFORMATION"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:complexType name="MyTag1">
<xs:sequence>
<!-- Taken this out -->
<xs:element ref="mine:GenericCodeStatus"/>
<!-- and replace it with name and type -->
<xs:element name="carStatus" type="mine:GenericCodeStatus"/>
</xs:sequence>
</xs:complexType>
Но тогда получите ошибку неопределенного значения для «типа» произошла ошибка. Я также попытался удалить пространство имен «мое».
Если я пытаюсь заменить тип с реф как в
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://www.myDomain.co.za/myCoreXsd" xmlns:mine="http://www.myDomain.co.za/myCoreXsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- Defining my Enum -->
<xs:element name="GenericCodeStatus">
<xs:annotation>
<xs:documentation>Generic code status</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="COMPLETED"/>
<xs:enumeration value="BUSY"/>
<xs:enumeration value="AWAITING INFORMATION"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:complexType name="MyTag1">
<xs:sequence>
<!-- Taken this out -->
<xs:element ref="mine:GenericCodeStatus"/>
<!-- and replace it with name and ref -->
<xs:element name="carStatus" ref="GenericCodeStatus"/>
</xs:sequence>
</xs:complexType>
Проверка отлично работает, но если я сохранить это XML Spy является удаление элемента имя и я вернулся туда, где я начал.
Если кто-нибудь знает пожалуйста?