2010-10-14 51 views
1

混合指標我已經在XML片斷如下如何XSD

<restriction> 
    <name>notempty</name> 
    <field>title</field> 
</restriction> 

這是由該XSD驗證

<xs:element name="restriction" maxOccurs="unbounded"> 
    <xs:complexType> 
     <xs:all> 
      <xs:element name="name" type="xs:string" minOccurs="1" /> 
      <xs:element name="field" type="xs:string" /> 
     </xs:all> 
    </xs:complexType> 
</xs:element> 

我需要改變XSD所以它也將驗證以下內容:

<restriction> 
    <name>notempty</name> 
    <fields> 
     <field>title</field> 
     <field>info</field> 
    </fields> 
</restriction> 

顯然xs:選擇用於這種事情,但我不知道如何合併它。有任何想法嗎?

回答

0

您需要將all更改爲sequence,然後在fieldfields之間創建一個選項。 XML Schema Primer的Section 2.7 building content models給出了以這種方式使用序列和選擇的例子。

我還建議在其他地方定義field,並使用xs:element/@ref指向它,以免重複。

+1

雖然這很煩人,我不能保持「全部」 – 2010-10-15 12:36:10