1
我正在开发携带版本号的架构定义。是否有可能将元素和组标记为仅对特定修订有效?在同一个定义文件中有多个版本的xml架构
我正在开发携带版本号的架构定义。是否有可能将元素和组标记为仅对特定修订有效?在同一个定义文件中有多个版本的xml架构
不使用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中描述的条件包含属性说明了解决该问题的一种可能方式。