6

XML schema 1.1<xs::redefine>和in之间有什么区别。<xs::override>我面前有两本关于 XML Schema 的书,但我仍然无法区分。我唯一可以确定的是,两者都普遍存在并且已<xs::redefine>被弃用。

4

2 回答 2

4

使用重新定义,您可以扩展或限制组件(复杂类型、简单类型、模型组和属性组)。因此,您重用组件的原始定义并扩展或限制它。

覆盖允许您替换组件的定义。因此,您创建一个具有相同名称的新组件来替换原始定义。您可以覆盖任何顶级命名组件(复杂类型、简单类型、元素声明、属性声明、模型组、属性组和符号)。

您可以在此处阅读有关覆盖的更多信息: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”

问候, 屋大维

于 2014-02-03T13:11:28.420 回答
3

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

当希望在旧组件和重新定义的组件之间有一些保证的限制或扩展关系时,在包含修改的组件定义 () (§4.2.4) 中定义的 <redefine> 构造在模式演变和版本控制中很有用。但是有时模式作者只是想用新组件替换旧组件而没有任何约束。此外,现有的 XSD 处理器已经实现了对 的冲突和不可互操作的解释,并且 <redefine> 构造已被弃用。本节中定义的 <override> 构造允许这种无约束的替换。

注意:本节其余部分中描述的重新定义功能已被弃用,并且可能会从本规范的未来版本中删除。鼓励模式作者避免在与本规范更高版本的互操作性或兼容性很重要的情况下使用它。

<xs:redefine>对与某些 xml 解析器不兼容的已定义元素施加约束。<xs:override>基本上做<xs:redefine>了一直在做的事情,但在更改整个元素定义方面更加灵活,而不考虑已经定义的元素。XML 解析器不必担心检查先前定义的元素在哪里<xs:override>使用,但<xs:redefine>.

于 2014-02-03T11:28:40.187 回答