group
El elemento group
permite nombrar agrupaciones de elementos y atributos para hacer referencia a ellas con un identificador. Se utiliza para definir un conjunto de elementos que son comunes en varias partes de un esquema y se pueden reutilizar en lugar de tener que definirlos varias veces.
Consideremos el siguiente documento XSD:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="persona" type="datos-personales" />
<xs:complexType name="datos-personales">
<xs:sequence>
<xs:group ref="datos-basicos"/>
<xs:element name="telefono" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:group name="datos-basicos">
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="fecha-nacimiento" type="xs:date"/>
</xs:sequence>
</xs:group>
</xs:schema>
El elemento group
se puede utilizar para:
- Definir el grupo. Para la definición, se utiliza el atributo
name
para asignarle un nombre y se incluyen las reglas en su contenido. - Utilizar el grupo. Para utilizar un grupo definido dentro del esquema, se debe utilizar el atributo
ref
con el nombre del grupo.
En el caso anterior, se está definiendo un grupo datos-basicos
que incluye una secuencia de dos elementos: <nombre>
y <fecha-nacimiento>
. A continuación, se utiliza ese grupo dentro de un tipo de dato llamado datos-personales
, el cual es utilizado por el elemento <persona>
.
El tipo datos-personales
define una secuencia:
- El grupo
datos-basicos
, el cual está formado por una secuencia de dos elementos:<nombre>
y<fecha-nacimiento>
. - El elemento
<telefono>
.
Una definición equivalente a la de datos-personales
es la sigiuente:
<xs:complexType name="datos-personales">
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="fecha-nacimiento" type="xs:date"/>
<xs:element name="telefono" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Un ejemplo de documento XML válido es el siguiente:
<persona>
<nombre>Fátima</nombre>
<fecha-nacimiento>1991-12-31</fecha-nacimiento>
<telefono>+34 666777888</telefono>
</persona>