Sustitución de elementos de XSD
- ¡Los elementos globales se refieren a los elementos directos del elemento "schema"! Los elementos locales (elementos locales) se refieren a los elementos que se encajan en otros elementos. Página anterior
- XSD <anyAttribute> Siguiente página
A través del XML Schema, un elemento puede reemplazar a otro.
Reemplazo de elementos
Vamos a dar un ejemplo: nuestros usuarios vienen de Reino Unido y Noruega. Deseamos tener la capacidad de permitir a los usuarios elegir si usar el nombre del elemento en noruego o en inglés en el documento XML.
Para resolver este problema, podemos definir una substitutionGroup.Primero, declaramos el elemento principal, luego declaramos los elementos secundarios, que pueden declarar que pueden reemplazar al elemento principal.
<xs:element name="name" type="xs:string"/> <xs:element name="navn"> substitutionGroup="name"/>
En el ejemplo anterior, el elemento "name" es el elemento principal, mientras que el elemento "navn" puede reemplazar al elemento "name".
Vea un fragmento de un 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"/>
Un documento XML válido debería parecerse a esto (basado en el esquema anterior):
<customer> <name>John Smith</name> </customer>
o algo así:
<kunde>John Smith <navn>John Smith</navn>
Evitar el reemplazo de elementos
Para evitar que otros elementos reemplacen a un elemento específico, utilice la propiedad block:
<xs:element name="name" type="xs:string"> block="substitution"/>
Vea un fragmento de un 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"/>
Un documento XML válido debería parecerse a esto (basado en el esquema anterior):
<customer> <name>John Smith</name> </customer>
Pero el siguiente documento ya no es válido:
<kunde>John Smith <navn>John Smith</navn>
</kunde>
El uso de substitutionGroup
El tipo de elemento reemplazable debe ser el mismo que el tipo de elemento principal o derivado del elemento principal. Si el tipo del elemento reemplazable es el mismo que el tipo del elemento principal, no es necesario especificar el tipo del elemento reemplazable.
Por favor, tenga en cuenta que todos los elementos en substitutionGroup (elementos principales y elementos reemplazables) deben declararse como elementos globales, de lo contrario no funcionarán!
¿Qué son los elementos globales (Elementos globales)?
- ¡Los elementos globales se refieren a los elementos directos del elemento "schema"! Los elementos locales (elementos locales) se refieren a los elementos que se encajan en otros elementos. Página anterior
- XSD <anyAttribute> Siguiente página