2012-02-28 24 views
0

我正在嘗試使元素的內容以枚舉屬性爲條件。每個屬性的內容將完全不同。例如:XML模式:根據枚舉屬性值對內容進行條件化

<?xml version="1.0" encoding="utf-8"?> 
<foo type="bar"> 
    <bargress num="5"/> 
    <bargress num="8"/> 
</foo> 

<?xml version="1.0" encoding="utf-8"?> 
<foo type="kan"> 
    <kangress say="hi"/> 
    <kangress say="all"/> 
</foo> 

會驗證,但

<?xml version="1.0" encoding="utf-8"?> 
<foo type="kan"> 
    <bargress num="5"/> 
    <bargress num="8"/> 
    <kangress say="hi"/> 
    <kangress say="all"/> 
</foo> 

不會。

這是可能的,如果是的話,我會怎麼做呢?

+0

我看了int使得抽象ComplexType'Foo'然後有子類型'FooBar'和'FooKan'。但是,我想避免使用xsi:type。例如。 '' – Arion 2012-02-28 01:04:35

回答

1

您所描述的基本上是「條件類型分配」,它是XSD 1.1中的新功能之一(今天在Xerces和Saxon中可用)。

XSD 1.0中最接近的是將您的「type」屬性重命名爲xsi:type,並使其引用模式中定義的複雜類型的名稱。

+0

如果Xerces和Saxon處理1.1,那對我來說已經足夠了。 – Arion 2012-02-28 20:58:22