我想为xml以下生成一个带有一些约束的XSD文件:
a)Cluster元素中应该有多个job元素。
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如何写得更好
<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"/>
答案 0 :(得分:0)
您的要求 iv)中的元素可以按任何顺序。和 ii)元素可以存在或不存在并且可以显示更多。是互斥的。
请参阅我的answer on a similar problem和其他替代方案。