2013-03-27 60 views

回答

0

不使用XSD,no。如果我想用共享結構的單一來源維護一個模式的多個版本,我會使用某種形式的識字編程系統,或者(更可能)爲此目的創造一種新的識字編程系統。

[幾個小時後...]

一個簡單的方法是在任何模式的構建將被列入僅適用於特定版本的自己的名字空間使用version屬性; version屬性的值將是空格分隔的版本標識符列表。例如:

<xs:schema targetNamespace="http://example.com/multiver" 
    xmlns:mv="http://example.com/multiver"> 

    <xs:element name="e" mv:ver="1.0"> 
    <!--* 1.0 version of element 'e' *--> 
    </xs:element> 
    <xs:element name="e" mv:ver="1.1"> 
    <!--* 1.1 version of element 'e' *--> 
    </xs:element> 
    <xs:element name="f"> 
    <!--* element 'f' is not version-dependent ... *--> 
    </xs:element> 
    ... 
</xs:schema> 

它易於使用XSLT或XQuery提取不僅僅是那些攜帶適當的MV聲明:版本值。

如果版本數量超過5或10,這種簡單的方法可能會變得乏味,你可能會決定你想要某些東西讓你能夠說出「up through version 3.2」和「from version 3.3到版本4.34,包括「。 section 4.2.2 of XSD 1.1中描述的條件包含屬性說明了解決該問題的一種可能方式。

相關問題