Los grupos de sustitución son una característica
del esquema XML que proporciona un modo de sustituir un elemento por otro en un
mensaje XML.
Un grupo de sustitución es una lista de elementos globales que pueden
aparecer en lugar de otro elemento global, denominado elemento de cabecera.
Un grupo de sustitución se define estableciendo la propiedad
Grupo de sustitución en un elemento global
(el elemento miembro) de forma que apunte a otro elemento
global (el elemento de cabecera). Este añade el elemento miembro al
grupo de sustitución del elemento de cabecera.
Consejo: Si los mensajes no se devuelven nunca como XML o si tiene
un modelo de mensaje simple, utilice un tipo complejo o un grupo
con la Composición establecida en Elección, en lugar de utilizar grupos de sustitución.
Elementos
- Elementos de cabecera
- Un elemento de cabecera es simplemente un elemento que se puede sustituir. Cuando se
analiza un mensaje, puede aparecer uno de los elementos miembros en lugar del
elemento de cabecera sin producir un error de validación.
- Elementos abstractos
- Un elemento abstracto es un elemento de cabecera que se debe sustituir. El
atributo 'abstracto' del elemento así lo indica. Normalmente, los elementos abstractos tienen otros elementos
en el grupo de sustitución, de lo contrario, no sirven de mucho. Siempre que aparezca un elemento abstracto en una definición de mensaje, deberá aparecer
en su lugar un miembro del grupo de sustitución.
Atributos
- Atributo bloque en elementos
- El atributo bloque en un elemento limita
el conjunto de elementos globales que pueden sustituir el elemento. El atributo bloque puede tomar cualquier subconjunto de los
valores restricción, extensión,
sustitución
o todo.
- Si el atributo bloque contiene restricción,
un elemento que esté basado en una restricción del tipo del elemento no
podrá sustituir el elemento.
- Si el atributo bloque contiene extensión, un elemento que esté basado en una
extensión del tipo del elemento no podrá sustituir el elemento.
- Si el atributo bloque contiene sustitución, un elemento que sea miembro
del grupo de sustitución del elemento no podrá sustituir el elemento.
- Si el atributo bloque contiene
todo, se aplicarán todas las limitaciones
indicadas más arriba.
- Atributo final en elementos
- El atributo final en un elemento limita
el conjunto de elementos globales que pueden ser miembros del grupo de sustitución del elemento. El atributo final puede tomar cualquier
subconjunto de los valores restricción, extensión o todo.
- Si el atributo final contiene restricción, un elemento que esté basado en
una restricción del tipo del elemento no podrá estar en el grupo de sustitución
del elemento.
- Si el atributo final contiene extensión, un elemento que esté basado
en una extensión del tipo del elemento no podrá estar en el grupo de sustitución
del elemento.
- Si el atributo final contiene
todo, se aplicarán las dos limitaciones
indicadas más arriba.
- Atributo bloque en tipos complejos
- El atributo bloque en un tipo complejo
limita el conjunto de otros tipos que pueden sustituir a dicho tipo. El atributo bloque puede tomar los valores restricción, extensión
o todo. Los significados de estos
valores son los mismos que los mostrados para el atributo bloque
en un elemento más arriba.
Un elemento que es miembro de un grupo de sustitución sólo puede
sustituir el elemento de cabecera si el tipo es compatible con el atributo bloque
del tipo del elemento de cabecera.
- Atributos bloque y
final predeterminados
- Se puede establecer un valor predeterminado para los atributos
bloque
y final a nivel de archivo de
definición de mensajes. Si se ha establecido un valor predeterminado para uno de estos
atributos o para ambos y no se ha establecido a nivel de objeto el atributo
bloque o final pertinente, se utiliza el
valor predeterminado para dicho objeto. Puede alterar temporalmente el valor predeterminado
a nivel de objeto.