Xml 在何处向XSD架构添加版本?
我处理的应用程序具有符合XSD模式的XML输出。随着功能添加到应用程序中,XSD会发生变化,我想在XSD文件中记录模式的版本 也许我遗漏了什么,但我还没有找到一种内置的方式来标记模式的版本Xml 在何处向XSD架构添加版本?,xml,xsd,version,Xml,Xsd,Version,我处理的应用程序具有符合XSD模式的XML输出。随着功能添加到应用程序中,XSD会发生变化,我想在XSD文件中记录模式的版本 也许我遗漏了什么,但我还没有找到一种内置的方式来标记模式的版本 如何操作?根据模式元素本身有一个版本属性: <schema attributeFormDefault = (qualified | unqualified) : unqualified blockDefault = (#all | List of (extension | restriction
如何操作?根据
模式
元素本身有一个版本
属性:
<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>
内容:((包括|导入|重定义|注释)*,((simpleType | complexType | group | attributeGroup)|元素|属性|注释*)*)
请参阅“3.15.2模式的XML表示”
但是,如果您发布了该模式,那么我认为最好的处理方法是使用目标名称空间。这将强制使用正确的版本(但会破坏兼容性)您可以使用xsd文档的名称空间
<xs:schema targetNamespace="http://yourcompany/yourapp/1.0" ... >
...
</xs:schema>
...
以w3.org定义的xsd为例,它们就是这样做的。请注意,根据定义,更改这里的版本号通常对xsd的任何使用者都是一个突破性的更改(无论实际更改有多小,或者更改了版本号的哪一部分)
对于影响较小的版本控制,关于在根元素中放置版本属性,似乎有一个共识:
<xs:schema version="1.0.0" ...>
...
</xs:schema>
...
为什么不在xsd文件名中指定版本?e、 这实际上是一个很好的主意。我认为在更改主要版本时,这是一个合适的解决方案。但是,如果您想进行更正或新的开发迭代,这就不太好了,因为所有XML文档都必须迁移到新的名称空间。我在中指出的schema元素的version属性似乎更适合这些情况。答案不正确。看见您还可以从以下位置进行尝试:名称空间不得更改,除非特定元素或属性的语义以完全不兼容的方式更改。[理由:更改命名空间需要更改所有客户端代码。]
是否有办法从根目录获取版本?即