Groupes
Un groupe est un ensemble d’éléments ou d’attributs. Il est utile de constituer des groupes pour pouvoir ordonner les éléments qu’ils contiennent.
Créer un groupe dans un schéma XML
Pour créer un nouveau groupe :
1. Dans le menu contextuel de l'élément dont vous voulez ordonner les balises dans le navigateur XML, sélectionnez Nouveau > Groupe.
2. Dans la fenêtre qui apparaît, saisissez le nom du groupe.
3. Cliquez sur Créer.

La fenêtre de création d’un groupe varie suivant le mode sélectionné. Pour obtenir l’ensemble des propriétés d’un groupe, vous devez sélectionner le "Niveau expert XML", accessible depuis le menu
Outils de l’éditeur de schémas.
Exemple
|
Schéma
|
Diagramme
|
Document XML
|
|
!  |
<Livre>
<Preface/>
<Chapitre>
</Chapitre>
...
<Epilogue>
</Epilogue>
</Livre>
|
Modélisation UML
Un groupe est représenté par une classe de stéréotype Schema Group.

Créez une classe.

Ouvrez sa fenêtre de propriétés.

Cliquez sur l’onglet
Caractéristiques.

Dans le champ
stéréotype, sélectionnez "Schema Group" .
Groupe d'attributs modèle
Il est possible de définir des modèles de groupes d'attributs. Ce type de groupe ne contient pas d'élément et contient un certain nombre d'attributs et de sous-groupes d'attributs. Il n'existe pas de notion d'ordre pour les groupes d'attributs.
Ces groupes apparaissent au niveau des schémas et sont ensuite réutilisés au sein des définitions de balise par référencement. Cela évite la redondance de définition.
Groupe d’éléments modèle
Comme pour les attributs, il est possible de définir des modèles de groupes d'éléments. Le but est d'éviter la redondance de définition car l'héritage entre groupes n'existe pas. Ces groupes sont définis au niveau du schéma. Il contiennent des sous-groupes d'éléments (All, sequence, choice). Ils sont référencés au sein des définitions de balises.
Ordonner les éléments contenus dans un groupe
Les éléments d'un groupe peuvent être ordonnés.
Pour ordonner les éléments :

Sélectionnez le groupe dans le navigateur de l’éditeur de schémas.

Dans la partie droite, cliquez sur l’onglet
Caractéristiques.

Dans le champ
Ordonnancement, sélectionnez l’une des valeurs suivantes à l'aide de la flèche :
• "All" : les éléments du type apparaissent 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.
• "Sequence" : les éléments doivent apparaître dans l'ordre spécifié par l'attribut de lien Order entre la classe Schema Group et les rôles d'association.
• "Choice" : seul un des éléments doit apparaître.
Ou :

Dans l’éditeur de schémas, cliquez avec le bouton droit sur le groupe à ordonner et sélectionnez
Propriétés du type.
La fenêtre de propriétés s'affiche.

Dans l'onglet
Génération, dans le sous-onglet du langage de génération (
XSD) renseignez le champ
XDD Order à l'aide de la flèche.
La valeur du paramètre XDD Order et celle des multiplicités des sous-éléments définissent la nature de l'ordonnancement et la fréquence d'apparition des sous-éléments au sein du groupe.
Le tableau suivant présente quelques exemples d'utilisation :
|
XDD Order
|
Multiplicité de A
|
Multiplicité de B
|
Multiplicité de C
|
Commentaire
|
Exemple
|
|
Choice
|
1
|
*
|
1
|
Une balise A ou (0 ou plusieurs B) ou une C
|
<X>
<A/>
</X>
|
|
Sequence
|
1
|
1
|
*
|
Une balise A suivie d'une B suivie de 0 ou plusieurs C.
|
<X>
<A/> <B/> <C/> <C/>
</X>
|
|
All
|
1
|
1
|
1
|
Une balise de chaque dans n'importe quel ordre.
|
<X>
<B/> <C/> <A/>
</X>
|
Modélisation UML

Affichez la fenêtre de propriétés d'une classe de stéréotype
Schema Group et procédez tel que décrit ci-dessus.
Utiliser un groupe
Les groupes peuvent être utilisés comme les classes pour déclarer un ensemble.
En XSD, une balise spéciale est créée (<sequence>, <choice>, <all>).
Exemple
Les balises définies sur la classe "Livre" déclarent une instance de groupe (multiplicité égale à 1). D'autre part, afin que le paquetage schéma ne soit pas "surpeuplé" inutilement, la classe "Chapitres ordonnés" est déclarée localement à la classe "Livre".

Local : cette caractéristique détermine si le groupe est créé localement à la définition de balise ou au groupe contenant l'élément, ou s’il est créé globalement (au niveau de l'espace de nommage).
XSD
<xsd:ComplexType name="Livre" >
<xsd:sequence>
<xsd:element name="Resume" type='Resume' minOccurs="1" maxOccurs="1"/>
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name = 'Preface' type="Preface" minOccurs="0" maxOccurs="1"/>
<xsd:element name = 'Chapitre' type="Chapitre" minOccurs="0" maxOccurs="*"/>
<xsd:element name = 'Epilogue' type="Epilogue" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:sequence>
<xsd:attribute name="ISBN" type="xsd:ID" use="required"/>
<xsd:attribute name="Auteur" type="xsd:IDREF" use="required"/>
<xsd:attribute name="Collection" type="xsd:IDREFS" />
<xsd:attribute name="genre" type="genre" use="required"/>
</xsd:ComplexType>