XML Schema 1.1中的xs:redefine和xs:override有什么区别?

6
在XML schema 1.1中,""和""有什么区别?我手头有两本关于XML Schema的书,但仍然无法区分它们的差异。唯一确定的是两者都很普遍,而""已被弃用。

1
也许这会有所帮助,http://www.datypic.com/books/defxmlschema/chapter18.html? - IndoKnight
这是我面前的一本书之一。仍在努力找到两个指令之间的区别。 - Olumide
2个回答

4
使用 redefine 可以扩展或限制组件(复合类型、简单类型、模型组和属性组)。因此,您可以重用组件的原始定义并对其进行扩展或限制。
覆盖允许您替换组件的定义。因此,您可以创建一个具有相同名称的新组件来替换原始定义。您可以覆盖任何顶级命名组件(复合类型、简单类型、元素声明、属性声明、模型组、属性组和注释)。
您可以在此处阅读有关覆盖的更多信息: http://www.w3.org/TR/xmlschema11-1/#override-schema 或者您可以阅读 Roger Costello 的 XML Schema 1.1 教程: http://www.xfront.com/xml-schema-1-1/index.html 我还推荐 Priscilla Walmsley 的书籍:“Definitive XML Schema, 2nd Edition”
问候, Octavian

3

摘自http://www.w3.org/TR/xmlschema11-1/#override-schema

<xs:redefine> 构造定义于 "包括修改的组件定义()(§4.2.4)" 中,在模式演进和版本控制中非常有用,当希望具有旧组件和重新定义组件之间的某些保证的约束或扩展关系时。但是在有些情况下,模式作者只想使用新元素替换旧元素而没有任何约束。此外,现有的 XSD 处理器已经实现了相互矛盾且不可互操作的解释,并且 <xs:redefine> 构造被《废弃》。本节中定义的 <xs:override> 构造允许这种无约束替换。

注意:本节其余部分所描述的重定义特性被《废弃》,可能会在未来版本的本规范中删除。鼓励模式作者避免在与本规范的后续版本的兼容性或互操作性很重要的情况下使用它。

<xs:redefine> 对已定义的元素施加了约束,这与一些 XML 解析器不兼容。 <xs:override> 做的实际上是 <xs:redefine>,但在修改整个元素定义时更加灵活,而无需考虑已定义的元素。XML解析器在使用 <xs:override> 时不需要担心检查先前定义的元素,但使用 <xs:redefine> 则不然。


1
所以 <xs::override> 只是 <xs::redefine> 的一个非歧义替代品。 - Olumide
1
更新了我的回复。希望你们觉得有用。 - IndoKnight
1
是的,我做过。但出于好奇,<xs:redefine> 会施加什么样的约束? - Olumide
1
像 xs:redefine 类型必须从它们的基本类型中扩展或限制。 - IndoKnight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接