Я хотел сгенерировать XSD-файл для ниже xml с некоторыми ограничениями:
a) В элементе Cluster должно быть несколько элементов задания.
b) В элементе Job,
Элементы
i) <name>
и <id>
являются обязательными и должны отображаться только один.
ii) </parentjobid>
элемент может присутствовать или отсутствовать и может появляться более одного.
iii) <description>
может присутствовать или отсутствовать
iv) Элементы могут быть в любом порядке в элементе Job.
<?xml version="1.0" encoding="UTF-8" ?>
<Cluster name="abc" id="101" >
<job>
<name>ansys</name>
<id>1001</id>
<parentjobid>12</parentjobid>
<description>This is thermal analysis</description>
</job>
<job>
<name>cfx</name>
<id>1002</id>
<parentjobid>122</parentjobid>
<parentjobid>121</parentjobid>
</job>
</Cluster>
Ниже приведен XSD, который я создал, но он не подчиняется вышеуказанным правилам.
Пожалуйста, поделитесь со мной, как этот xsd можно написать лучше
XSD:
<xs:element name="job">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded" >
<xs:element ref="name" minOccurs="1" maxOccurs="1" />
<xs:element ref="jobid" minOccurs="1" maxOccurs="1"/>
<xs:element ref="description" minOccurs="1" maxOccurs="1"/>
<xs:element ref="parentjobid" maxOccurs="32" minOccurs="0" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="name" type="xs:string" />
<xs:element name="jobid" >
<xs:simpleType>
<xs:restriction base="xs:positiveInteger" >
<xs:minInclusive value="1"></xs:minInclusive>
<xs:maxInclusive value="65536"></xs:maxInclusive>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="parentjobid" >
<xs:simpleType>
<xs:restriction base="xs:positiveInteger" >
<xs:minInclusive value="1"></xs:minInclusive>
<xs:maxInclusive value="65536"></xs:maxInclusive>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="description" type="xs:string"/>