Вопрос

What is the difference between <xs::redefine> and <xs::override> in XML schema 1.1. I've got two books on XML Schema in front of me and I still can't tell the difference. The only thing that I'm sure of is that both are pervasive and that <xs::redefine> is deprecated.

Это было полезно?

Решение

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

Другие советы

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>.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top