Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 在何处向XSD架构添加版本?_Xml_Xsd_Version - Fatal编程技术网

Xml 在何处向XSD架构添加版本?

Xml 在何处向XSD架构添加版本?,xml,xsd,version,Xml,Xsd,Version,我处理的应用程序具有符合XSD模式的XML输出。随着功能添加到应用程序中,XSD会发生变化,我想在XSD文件中记录模式的版本 也许我遗漏了什么,但我还没有找到一种内置的方式来标记模式的版本 如何操作?根据模式元素本身有一个版本属性: <schema attributeFormDefault = (qualified | unqualified) : unqualified blockDefault = (#all | List of (extension | restriction

我处理的应用程序具有符合XSD模式的XML输出。随着功能添加到应用程序中,XSD会发生变化,我想在XSD文件中记录模式的版本

也许我遗漏了什么,但我还没有找到一种内置的方式来标记模式的版本


如何操作?

根据
模式
元素本身有一个
版本
属性:

<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属性似乎更适合这些情况。答案不正确。看见您还可以从以下位置进行尝试:
名称空间不得更改,除非特定元素或属性的语义以完全不兼容的方式更改。[理由:更改命名空间需要更改所有客户端代码。]
是否有办法从根目录获取版本?即