在XSD架构中添加版本的位置?

时间:2010-01-26 10:14:55

标签: xml xsd version

我工作的应用程序具有符合XSD架构的XML输出。随着功能添加到应用程序中,XSD发生了变化,我想在XSD文件中记下模式的版本。

也许我错过了一些东西,但我还没有找到标记模式版本的内置方法。

你是怎么做到的?

2 个答案:

答案 0 :(得分:18)

您可以使用xsd文档的命名空间

<xs:schema targetNamespace="http://yourcompany/yourapp/1.0" ... >
  ...
</xs:schema>

作为一个例子,看看w3.org定义的xsd,他们就是这样做的。请注意,更改版本号通常定义为xsd的任何消费者的重大变化(无论实际变化有多小)。

对于影响较小的版本控制,似乎就将一个版本属性放在根元素上达成了一致:

<xs:schema version="1.0.0" ...>
  ...
</xs:schema>

答案 1 :(得分:8)

根据schema元素本身有version属性:

<schema
  attributeFormDefault = (qualified | unqualified) : unqualified
  blockDefault = (#all | List of (extension | restriction | substitution))  : ''
  elementFormDefault = (qualified | unqualified) : unqualified
  finalDefault = (#all | List of (extension | restriction | list | union))  : ''
  id = ID
  targetNamespace = anyURI
  version = token
  xml:lang = language
  {any attributes with non-schema namespace . . .}>
  Content: ((include | import | redefine | annotation)*, (((simpleType | complexType | group | attributeGroup) | element | attribute | notation), annotation*)*) 
</schema>

参见http://www.w3.org/TR/xmlschema-1/#key-schema,“3.15.2模式的XML表示”

但是,如果您发布了架构,那么我认为处理它的最佳方法是使用目标命名空间。这将强制使用正确的版本(但破坏兼容性)