Saltar al contenido principal

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>