2013-07-02 23 views
0

我的XML文檔的樣子:如何使用具有特定屬性值的元素強制執行模式?

<Entries> 
    <entry key="some string" value="some string"/> 
    " " 
    " " 
    " " 
</Entreis> 

我需要強制執行的規則項要素之一必須有值「版本」的關鍵。模式是什麼樣子?

我試圖

<xs:element name ="Entries"> 
    <xs:complexType> 
    <xs:sequence minOccurs="1" maxOccurs="1"> 
     <xs:element name="entry"> 
     <xs:attribute name="key" fixed="Version" type="xs:string/> 
     <xs:attribute name="value" type="xs:string/> 
     </xs:element> 
    </xs:sequence> 
    <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
     <xs:element name="entry"> 
     <xs:attribute name="key" type="xs:string/> 
     <xs:attribute name="value" type="xs:string/> 
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

但我得到一個驗證錯誤說我不能有序列中的複雜類型中出現兩次或者說,它是無效的或錯位。

回答

2

恐怕不能在xsd 1.0中完成。你不能在同一個地方有兩個具有相同名稱但不同(但相似)結構的元素。

另一方面@key="Version"表示什麼?無法將此信息作爲Entries元素的一部分呈現(類似<Entries version="..">)?

+0

我只想確保其中一個條目元素具有名稱值「Version」。版本號非常重要。我需要確保它在該條目列表中的某處指定。有沒有不同的方式來實現這一點? – smuggledPancakes

+1

當然有:指定一個VersionEntry元素,要求只發生一次。或者(如Jirka u建議)將版本號放入父級的屬性中。 –

相關問題