Diferencia entre xs: redefinir y xs: anular en el esquema XML 1.1
xsd redefinition (2)
Al redefinir, puede ampliar o restringir un componente (tipos complejos, tipos simples, grupos de modelos y grupos de atributos). Entonces, reutiliza la definición original del componente y la extiende o restringe.
La anulación le permite reemplazar la definición de un componente. Entonces, crea un nuevo componente con el mismo nombre que reemplaza la definición original. Puede anular cualquier componente nombrado de primer nivel (tipos complejos, tipos simples, declaraciones de elementos, declaraciones de atributos, grupos de modelos, grupos de atributos y anotaciones).
Puede leer más sobre la anulación aquí: http://www.w3.org/TR/xmlschema11-1/#override-schema O puede leer el tutorial de Roger Costello XML Schema 1.1: http://www.xfront.com /xml-schema-1-1/index.html
También recomiendo el libro de Priscilla Walmsley: "Definitive XML Schema, 2nd Edition"
Saludos, Octavio
¿Cuál es la diferencia entre <xs::redefine>
y <xs::override>
en el esquema XML 1.1. Tengo dos libros sobre XML Schema delante de mí y todavía no puedo ver la diferencia. Lo único de lo que estoy seguro es que ambos son generalizados y que <xs::redefine>
está en desuso.
Extracto de http://www.w3.org/TR/xmlschema11-1/#override-schema
El constructo <redefinir> definido en Incluir definiciones de componentes modificados () (§4.2.4) es útil en la evolución del esquema y el control de versiones, cuando es deseable tener alguna restricción garantizada o relación de extensión entre el componente anterior y el componente redefinido. Pero hay ocasiones en que el autor del esquema simplemente quiere reemplazar componentes antiguos por nuevos sin ninguna restricción. Además, los procesadores XSD existentes han implementado interpretaciones conflictivas y no interoperables de, y la construcción <redefinir> está · en desuso ·. La construcción <override> definida en esta sección permite dicho reemplazo sin restricciones.
Nota: La función de redefinición descrita en el resto de esta sección está · en desuso · y puede ser eliminada de futuras versiones de esta especificación. Se alienta a los autores del esquema a evitar su uso en casos donde la interoperabilidad o la compatibilidad con versiones posteriores de esta especificación son importantes.
<xs:redefine>
pone limitaciones a los elementos ya definidos que no es compatible con algunos de los analizadores xml. <xs:override>
hace esencialmente lo que <xs:redefine>
ha estado haciendo, pero es más flexible en términos de cambiar la definición de todo el elemento sin tener en cuenta el ya definido. Los analizadores XML no necesitan preocuparse por verificar los elementos previamente definidos donde se usa <xs:override>
, pero no es el caso con <xs:redefine>
.