1

我正在开发带有修订号的架构定义。是否可以将元素和组标记为仅对特定修订有效?

4

1 回答 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 回答