2011-03-07 19 views
1

我想生成一個xSD文件,其中包含一些約束條件:如何在一些約束下爲xml生成一個XSD文件?

a)集羣元素中應該有多個作業元素。

二)在工作元件,

ⅰ)<name><id>元素是強制性的,只出現一個必需的。

ii)</parentjobid>元素可以存在或不存在並且可以出現多於一個。

ⅲ)<description>可以存在或不存在

ⅳ)元素可以是在工作元件的任何順序。

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

回答

0

你的要求IV)元素可以在工作元素任意順序ii)元素可以存在或不存在並且可以出現多於一個是互斥的。

看到我的answer on a similar problem和一些替代品。

+0

非常感謝Filburt的回覆。我現在得到了這個問題。我猜也是,我必須使用XML Schema1.1或任何其他解析器來完成此驗證。我的選擇元素有> 15元素,所以在這裏應用組合將是不好的選擇。 – user648330 2011-03-09 13:22:35