Difference between xs:redefine and xs:override in XML schema 1.1

吃可爱长大的小学妹 提交于 2019-12-04 06:06:15

Using redefine you can extend or restrict a component (complex types, simple types, model groups and attribute groups). So, you reuse the original definition of the component and you extend or restrict it.

The override allows you to replace the definition of a component. So, you create a new component with the same name that replaces the original definition. You can override any top-level named component (complex types, simple types, element declarations, attributes declarations, model groups, attribute groups and notations).

You can read more about the override here: http://www.w3.org/TR/xmlschema11-1/#override-schema Or you can read the Roger Costello XML Schema 1.1 tutorial: http://www.xfront.com/xml-schema-1-1/index.html

I also recommend Priscilla Walmsley book: "Definitive XML Schema, 2nd Edition"

Regards, Octavian

IndoKnight

Excerpt from http://www.w3.org/TR/xmlschema11-1/#override-schema

The <redefine> construct defined in Including modified component definitions () (§4.2.4) is useful in schema evolution and versioning, when it is desirable to have some guaranteed restriction or extension relation between the old component and the redefined component. But there are occasions when the schema author simply wants to replace old components with new ones without any constraint. Also, existing XSD processors have implemented conflicting and non-interoperable interpretations of , and the <redefine> construct is ·deprecated·. The <override> construct defined in this section allows such unconstrained replacement.

Note: The redefinition feature described in the remainder of this section is ·deprecated· and may be removed from future versions of this specification. Schema authors are encouraged to avoid its use in cases where interoperability or compatibility with later versions of this specification are important.

<xs:redefine> puts constraints on already defined elements which is not compatible with some of the xml parsers. <xs:override> does essentially what <xs:redefine> had been doing but is more flexible in terms of changing the whole element definition without any regard to the already defined one. XML parsers need not to worry about checking the previously defined elements where <xs:override> is used, but not the case with <xs:redefine>.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!