Как создать файл XSD для ниже XML с некоторыми ограничениями? - PullRequest
1 голос
/ 07 марта 2011

Я хотел сгенерировать 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"/>

1 Ответ

0 голосов
/ 08 марта 2011

Ваши требования iv) Элементы могут быть в любом порядке в элементе Job. и ii) элемент может присутствовать или отсутствовать и может появляться более одного . являются взаимоисключающими.

См. Мой ответ на похожую проблему и некоторые альтернативы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...