我想要完成的是創建一個XML模式,它描述了一個可以採用兩種形式之一的XML文件。兩者之間有一段共同的元素,然後是一個不同的小部分。喜歡的東西:沒有嵌套的XML選擇
<Dessert>
<Identifier> Hot Fudge Sundae </Identifier>
<SaleDate> 2013-06-03 </SaleDate>
<Duration> 2 </Duration>
<Size> SuperScooper </Size>
</Dessert>
<Dessert>
<Identifier> Dutch Apple Pie </Identifier>
<SaleDate> 2013-06-03 </SaleDate>
<Duration> 1 </Duration>
<AlaMode> 1 </AlaMode>
<IceCreamFlavor> Vanilla </IceCreamFlavor>
</Dessert>
因此,對於冰淇淋甜點有隻是一個大小而對於餡餅有一個AlaMode指標和IceCreamFlavor符。
我要完成什麼是使用xs:choice
符,以表明Dessert
XML要麼有一個或另一個(Size
或AlaMode
和IceCreamFlavor
),這樣我就可以驗證它們。
我一直試圖做的是創建兩種類型,做這樣的事情:
,然後做一些事情,如:
<xs:choice>
<xs:element name="Sundae" type="SundaeType" />
<xs:element name="Pie" type="PieType" />
</xs:choice>
而且但由此產生的XML,當然,有一個佈局,像這樣:
<Dessert>
<Identifier> Hot Fudge Sundae </Identifier>
<SaleDate> 2013-06-03 </SaleDate>
<Duration> 2 </Duration>
<Sundae>
<Size> SuperScooper </Size>
<Sundae>
</Dessert>
不匹配現有的文件結構。
我可以簡單地將所有可能的元素聯合起來,並廢除xs:choice
的東西,但這並不能表達格式的期望(例如,它不適用於聖代有AlaMode
元件)。
有什麼辦法可以做到這一點?我懷疑如果我只有一個不同的領域,我可以用xs:choice
(也許)來完成這個任務,而沒有那個額外的等級。或者我可能只是在這裏錯過了一些東西。
是的,我意識到佈局不是最好的,但它是一個現有的格式,我可以在這一點上真正改變。
感謝您的回答。這對我有幫助。 – itsmatt