2014-09-29 57 views
0

之一也許我的詞彙量是有點不對:XSD - 限制型三種自定義類型

我想創建一個XSD,這定義了許多「自定義類型」爲元素之一。
我的xml應該有alsways的相同的'someInfo',然後一個元素是一種 CustomTypeA或CustomTypeB。

的XML應該是這樣的:

<xml> 
    <someInfo>whatever is important</someInfo> 
    <info type="CustomTypeA"> 
    <CustomTypeA-1>F1</CustomTypeA-1> 
    <CustomTypeA-2>F2</CustomTypeA-2> 
    </info> 
</xml> 

或在其他情況下,其中的信息應該是如果其他CustomType:

<xml> 
    <someInfo>whatever is important in an other case</someInfo> 
    <info type="CustomTypeB"> 
    <CustomTypeB-1 attr1="someAttribute">F1</CustomTypeB-1> 
    </info> 
</xml> 

回答

1

如果你想要一個元素的類型依賴於其中一個屬性的值有兩個選項:

(a)使用「xsi:type」作爲屬性名稱,其值是模式中的類型的名稱

(b)使用XSD 1.1和條件類型分配的新功能。如果您能夠使用XSD 1.1這是最好的解決方案,但並非所有人都支持它。

+0

我現在用內容的普通'xs:extension'解決了這個問題,但這有所幫助。 – Sammy 2014-10-01 12:58:49