XMLSchema1.1中的<xs::redefine>和<xs::override>有什么区别?我面前有两本关于XML的书,但我仍然无法分辨区别。我唯一确信的是,两者都是普遍存在的,而且<xs::redefine>是不受欢迎的。
发布于 2014-02-03 13:11:28
使用重新定义,您可以扩展或限制组件(复杂类型、简单类型、模型组和属性组)。因此,您重用组件的原始定义,并扩展或限制它。
重写允许您替换组件的定义。因此,您将创建一个新组件,其名称与原始定义的名称相同。您可以覆盖任何顶级命名组件(复杂类型、简单类型、元素声明、属性声明、模型组、属性组和符号)。
您可以在这里阅读更多有关覆盖的信息:http://www.w3.org/TR/xmlschema11-1/#override-schema或阅读Roger XMLSchema1.1教程:http://www.xfront.com/xml-schema-1-1/index.html
我还推荐普里西拉·沃尔姆斯利( Priscilla Walmsley )的书:“确定的XML模式,第二版”
你好,屋大维
发布于 2014-02-03 11:28:40
http://www.w3.org/TR/xmlschema11-1/#override-schema摘录
在包含修改后的组件定义() (§4.2.4)中定义的构造在模式演化和版本控制中非常有用,因为在旧组件和重新定义的组件之间需要有一些有保证的限制或扩展关系。但是,在某些情况下,模式作者只是想不受任何约束地用新组件替换旧组件。此外,现有的XSD处理器已经实现了冲突的和不可互操作的解释,并且构造是·deprecated·。本节中定义的构造允许这样的无约束替换。 注意:本节其余部分中描述的重定义特性是·deprecated·,可能会从本规范的未来版本中删除。在本规范的互操作性或与本规范后期版本的兼容性很重要的情况下,鼓励模式作者避免使用它。
<xs:redefine>对已经定义的元素设置约束,这些元素与某些xml解析器不兼容。<xs:override>从本质上做了<xs:redefine>一直在做的事情,但在更改整个元素定义方面更加灵活,而不考虑已经定义的元素定义。XML解析器无需担心检查使用<xs:override>的先前定义的元素,但不需要检查<xs:redefine>的情况。
https://stackoverflow.com/questions/21525427
复制相似问题