我正在开发带有修订号的架构定义。是否可以将元素和组标记为仅对特定修订有效?
问问题
132 次
1 回答
0
不使用 XSD,不。如果我想使用共享结构的单一来源来维护模式的多个版本,我会使用某种形式的识字编程系统,或者(更有可能)为此目的发明一种新形式的识字编程系统。
[几个小时后…… ]
一种简单的方法是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:ver 值的声明很简单。
如果版本数量超过 5 或 10 个,这种简单的方法可能会变得有点乏味,并且您可能会决定想要一些允许您说出诸如“升级到 3.2 版”和“从 3.3 版到 4.34 版,包括的”。XSD 1.1 的 4.2.2 节中描述的条件包含属性说明了解决该问题的一种可能方法。
于 2013-04-03T16:32:27.167 回答