Latest web development tutorials

Sustituir los elementos de esquema XML

Por XML Schema, un elemento se puede sustituir por otro elemento.


Los elementos reemplazados

Vamos a ilustrar: nuestros clientes del Reino Unido y Noruega. Queremos tener la capacidad de permitir a los usuarios optan por utilizar los nombres de los elementos de Noruega en el documento XML o el nombre del elemento Inglés.

Para resolver este problema, podemos definir un substitutionGroup en el esquema XML. En primer lugar, declaramos el elemento principal, a continuación, vamos a declarar elementos menores, estos elementos pueden asignarse una vez que son capaces de sustituir el elemento primario.

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

En el ejemplo anterior, el elemento "nombre" es el principal elemento, el elemento "navn" puede cambiar el elemento "nombre".

Considere la posibilidad de un fragmento de esquema XML:

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
<xs:sequence>
<xs:element ref="name"/>
</xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" substitutionGroup="customer"/>

documento XML válido como esto (de acuerdo con el esquema anterior):

<customer>
<name>John Smith</name>
</customer>

O algo así:

<kunde>
<navn>John Smith</navn>
</kunde>


Reemplazar elemento de tope

Para evitar que otros elementos sustituyen a un elemento determinado, utilizan las propiedades del bloque:

<xs:element name="name" type="xs:string" block="substitution"/>

Vea un fragmento de esquema XML:

<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
<xs:sequence>
<xs:element ref="name"/>
</xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name="kunde" substitutionGroup="customer"/>

documento XML válido debe tener este aspecto (de acuerdo con el esquema anterior):

<customer>
<name>John Smith</name>
</customer>

Sin embargo, el siguiente documento ya no es legítimo:

<kunde>
<navn>John Smith</navn>
</kunde>


uso substitutionGroup

elementos reemplazables deben ser los principales elementos del mismo tipo, o derivados del elemento principal. Si el tipo puede sustituir elementos de los principales elementos del mismo tipo, que no tendrá que especificar el tipo de elemento puede ser reemplazado.

Tenga en cuenta, substitutionGroup todos los elementos de los elementos primarios (y elementos reemplazables) deben ser declarados como elementos globales, de lo contrario no va a funcionar!


¿Cuál es el elemento global (Global Elementos)?

elemento global se refiere a los elementos secundarios directos del elemento de "esquema"! elementos locales (elementos locales) se refiere a los elementos anidados dentro de otros elementos.