如何使用一些约束生成xml以下的XSD文件?

时间:2011-03-07 15:19:45

标签: xsd

我想为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如何写得更好

的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"/>

1 个答案:

答案 0 :(得分:0)

您的要求 iv)中的元素可以按任何顺序 ii)元素可以存在或不存在并且可以显示更多是互斥的。

请参阅我的answer on a similar problem和其他替代方案。