Groupes modèles (XSD)
Dans le cadre de la génération XSD dans MEGA, les classes UML servent à élaborer des contenus en précisant des contraintes d'ordonnancement lorsqu'il s'agit d'un contenu en termes de sous éléments ou des regroupement d'attributs si la classe contient des attributs.
Lorsque la classe est utilisée pour construire un type de balise, ce contenu décrit les sous balises et les sous attributs pouvant être ajoutés dans les balises de ce type.
D'autre part, vous pouvez définir des contenus qui ne donnent pas lieu à des balises dans le document instance. Par contre, ces contenus sont réutilisables dans les définitions de type de balise. Pour cela, vous devez utiliser les classes de stéréotype "schema group". Voir
"Générer les groupes XSD".
Créer et utiliser un groupe modèle XSD
Les classes groupes modèles doivent être des composantes de la classe schéma et avoir le stéréotype "schema group".
Afin d'utiliser un groupe modèle dans un type (ou dans un autre groupe), vous devez créer une composition entre le type (ou le groupe) et la classe groupe modèle. Le rôle du groupe modèle (rôle non composé) contient les informations relatives à cette utilisation (multiplicité par exemple).
Afin de pouvoir utiliser le groupe modèle dans le schéma XSD, vous devez y faire référence.
<xsd:group name="modelGroup">
<xsd:choice>
<xsd:element name="elmt" type="type1" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="anotherElmt" type="anotherType"/>
</xsd:choice>
</xsd:group>
<xsd:complexType name="type2">
<xsd:sequence>
<xsd:group ref="modelGroup" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
Pour référencer un groupe modèle :

Reliez le rôle de la composition {type, groupe modèle} à celui de la composition {schema, groupe modèle}. Il s’agit d’un lien de type "élément référencé".
<?xml version='1.0' encoding='ISO-8859-1'?>
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="element" type="type" minOccurs="0" maxOccurs="unbounded">
</xsd:element>
<xsd:attributeGroup name="groupemodeledattributs">
<xsd:attribute name="Attribut" type="xsd:int" use="required">
</xsd:attribute>
</xsd:attributeGroup>
<xsd:complexType name="type" mixed="false">
<xsd:attribute name="id" use="required" type="xsd:ID"/>
<xsd:attributeGroup ref="groupemodeledattributs"/>
</xsd:complexType>
</xsd:schema>
Les classes de stéréotype "schema group" servent à modéliser tant les groupes modèles d'éléments que les groupes modèles d'attributs. Une classe groupe modèle représente soit un groupe d'éléments soit un groupe d'attributs, l'un excluant l'autre.
Dans le cas où une classe "schema group" contient un ou des attributs, elle est considérée comme groupe d'attribut. Cela donne donc lieu à un groupe modèle d'attribut dont la balise dans le schéma XSD est générée sous la forme <attributeGroup> (de même que les références dans les types).