2013-10-24 108 views
0

我有以下XSD,我試圖添加一些restictions。我想限制GroupType上的條目只允許使用「peer」和「child」兩個字。我已經在很多領域嘗試了restiction從句,但還沒有完成。限制XSD內的值

爲簡潔起見,還刪除了一些元素,但流程未被更改。

任何幫助表示讚賞。

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="AllMeta"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element maxOccurs="unbounded" name="WikiMeta"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Groups"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element maxOccurs="unbounded" name="WikiGroup"> 
         <xs:complexType> 
         <xs:sequence> 
          <xs:element name="GroupType" type="xs:string" minOccurs="1" maxOccurs="1" /> 
          <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" /> 
         </xs:sequence> 
         </xs:complexType> 
        </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

回答

0

我想在GroupType條目限制爲僅允許的話「對等」和「孩子」

因此,而不是type="xs:string"你需要給元素自定義simpleType與枚舉值:

<xs:element name="GroupType" minOccurs="1" maxOccurs="1"> 
    <xs:simpleType> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="peer" /> 
     <xs:enumeration value="child" /> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:element> 

如果你需要同樣的限制在其他地方,那麼你可以聲明一個頂級命名simpleType和然後在xs:element中按名稱引用該類型。

+0

謝謝伊恩。我試圖用頂級simpleType來做到這一點,但是我很高興,因爲它只在模式中出現過一次。 – dotnetnoob