Générer les groupes XSD
Les groupes servent à définir des contraintes d'organisation sur les éléments contenus par un type de balise.
D'après les spécifications XSD, toutes les déclarations d'éléments doivent être effectuées dans des groupes.
En général, lors de la génération, les groupes sont déduits des classes de stéréotype "schemaGroup". Ce type de classe sert également à la représentation des groupes modèles d'éléments et d'attributs.
Dans certains cas, les groupes générés ne correspondent pas à une classe de stéréotype "schémaGroup" mais sont issus d'une classe représentant un type d'élément. La contrainte d'ordre est spécifiée par le paramètre de génération XDD order affiché dans la fenêtre de propriétés d’une classe.
Les différents groupes générés sont :
all
Un contenu "all" permet d'autoriser les éléments du type à apparaître aucune ou une fois et dans n'importe quel ordre. Les groupes "all" ne sont autorisés qu'au plus haut niveau d'un type et doivent être seuls. De plus, ils ne peuvent contenir que des éléments.

Le nombre de fois où l’élément apparaît est précisé par la multiplicité déclarée sur l’élément.
choice
Un contenu "choice" entraîne l'apparition d'un seul élément parmi ceux déclarés dans le groupe.
sequence
Un groupe "sequence" oblige les éléments du groupe à apparaître dans l'ordre dans lequel ils sont déclarés dans le groupe.
any
Un groupe "any" est un groupe qui peut contenir n'importe quel type d'élément. Vous pouvez cependant restreindre le groupe d'éléments à un ensemble d'espaces de nommage.
Le paramètre XSD Any est accessible dans la fenêtre de propriétés du groupe. Il a comme valeurs possibles :
• "any" : définit un groupe de n’importe quel type d'élément.
• "anyAttribute" : définit un groupe de n’importe quel type d’attribut.
La manière dont les groupes sont générés varie selon les cas suivants :
• Si le groupe contient des sous-éléments, le groupe est généré suivant l’ordre défini ("sequence", "choice" ou "all").
• Si le groupe ne contient pas de sous-élément, il est généré suivant ce que vous avez défini sous XSD Any ("any" ou "anyAttribute"). Si rien n’est précisé sous XSD Any, rien n’est généré.
Groupes hérités
Il se peut qu'un type B contenant un groupe hérite d'un type A contenant un groupe du même type. Le schéma XML généré associé spécifiera la notion d'héritage.
Cependant, dans le document instance résolu par le schéma, l'élément de type <B> ne contiendra pas un groupe avec la concaténation des éléments de A et de B mais deux groupes : celui défini dans A puis celui défini dans B.
<xsd:complexType name="A" mixed="false">
<xsd:sequence>
<xsd:element name="E1" type="E1" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="E2" type="E2" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID" use="required"/>
</xsd:complexType>
<xsd:complexType name="B" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="A">
<xsd:sequence>
<xsd:element name="E3" type="E3" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="E4" type="E4" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
Pour n’obtenir qu’un seul groupe généré, vous devez définir un type B qui n’hérite pas du type A mais auquel vous rajoutez les attributs ou éléments de A.