Travailler avec des types complexes et des types simples
Une fois que vous avez défini le modèle de contenu d'un élément, vous pouvez décider de vouloir le réutiliser ailleurs dans votre schéma. Ceci peut être le cas, par exemple, si vous voulez définir un modèle de contenu pour les adresses aux États-Unis d’Amérique et au Royaume-Uni. Quelques composants des deux formats d’adresse sont communs, par exemple, les composants rue et ville. D’autres composants, par contre, sont différents. Une stratégie judicieuse serait donc de réutiliser les composants communs dans chaque modèle de contenu (US et UK), et compléter chaque modèle de contenu avec les composants spécifiques y afférents (tels que le code postal ZIP aux États-Unis d’Amérique et le code postal au Royaume-Uni). Pour ce faire, nous pouvons créer des composants communs tel qu’un type complexe global (ou, en alternative, chaque composant commun en tant qu’élément global), et réutiliser le type complexe global (ou les éléments globaux) dans le modèle de contenu de chaque type d’adresse.
Dans cette section, vous allez travailler avec des types complexes globaux. Une définition complexe est une définition de type pour des éléments qui contiennent d’autres éléments et/ou des attributs. Vous allez d'abord créer un type complexe au niveau global puis l’importer dans un modèle de contenu et l’étendre. Vous apprendrez à gérer les éléments globaux plus loin dans ce tutoriel.
Créer un type complexe global
L’élément de base Address que nous avons défini (contenant les éléments Name, Street, et City) peut être réutilisé dans des formats d'adresse variés. C'est pourquoi nous allons créer cette définition d'élément en tant que type complexe, qui pourra être réutilisé.
Pour créer un type complexe global :
1.Dans le Mode de Modèle de contenu, cliquez avec la touche de droite sur l'élément Address.
2.Dans le menu contextuel qui apparaît maintenant, choisir Rendre Global | Type complexe. Un type complexe global appelé AddressType est créé et l’élément Address dans le modèle contenu Company est attribué à ce type. Le contenu de l’élément Address est le modèle de contenu AddressType, qui est affiché dans un encadre jaune. Notez que le type de données de l’élément Address est désormais AddressType.
3.Cliquez sur l’icône Afficher tous les globaux . Cela vous permet de consulter l'Aperçu de schéma dans lequel vous pouvez consulter tous les composants globaux du schéma.
4.Cliquez sur les icônes d’agrandissement pour les entrées Expand, element et complexType dans l'Assistant de saisie Composants, pour consulter les structures de schéma respectifs. L'Aperçu de schéma affiche maintenant deux composants globaux : l’élément Company et le type complexe AddressType. L'Assistant de saisie Composants affiche aussi le type complexe AddressType.
5.Cliquer sur l'icône du Mode Modèle de contenu de AddressType pour voir son modèle de contenu (voir la capture d’écran ci-dessous). Veuillez noter la forme du conteneur du type complexe.
6.Cliquer sur l'icône Afficher tous les globaux pour retourner à l'Aperçu de schéma.
Étendre une définition de type complexe
Nous allons maintenant utiliser le composant global AddressType pour créer deux types d'adresses spécifiques au pays. À cette fin, nous allons définir un nouveau type complexe basé sur le composant de base AddressType, puis nous allons étendre la définition.
Pour ce faire, procédez comme suit :
1.Passer à l'Aperçu de schéma. (Si vous vous trouvez dans le mode Modèle de contenu, cliquez sur l'icône Afficher tous les globaux .)
2.Cliquez sur l’icône Apposer située en haut à gauche de la fenêtre de composant. Le menu suivant s’ouvre :
3.Sélectionnez ComplexType depuis le menu. Une nouvelle ligne apparaît dans la liste de composants et le curseur est réglé de manière à ce que vous puissiez saisir le nom de composant.
4.Saisissez US-Address et confirmez avec Enter. (Si vous oubliez de saisir le signe "-" et que vous saisissez un espace, le nom d'élément apparaîtra en rouge, signalisant un caractère invalide.)
5.Cliquer l''icône de Mode de Modèle de contenu de US-Address pour voir le modèle de contenu du nouveau type complexe. Le modèle de contenu est vide (voir la capture d’écran ci-dessous).
6.Dans l'assistant de saisie Détails, cliquez sur la liste de choix base et sélectionnez l’entrée AddressType.
Le Mode de Modèle de contenu affiche maintenant le modèle de contenu AddressType en tant que le modèle de contenu des adresses US (voir la capture d’écran ci-dessous).
7.Maintenant, nous pouvons étendre le modèle du type complexe de US-Address pour prendre un élément de code postal (ZIP Code). Pour ce faire, cliquez avec la touche de droite sur le composant US-Address et, à partir du menu contextuel qui apparaît, choisissez Ajouter enfant | Séquence. Un nouveau compositeur de séquence est affiché à l'extérieur de la fenêtre AddressType (voir la capture d’écran ci-dessous). Il s'agit d'une indication visuelle pour indiquer qu'il s'agit de l'extension de l'élément.
8.Cliquez avec la touche de droite sur le nouveau compositeur de séquence et sélectionnez Ajouter enfant | Élément.
9.Nommez le nouvel élément Zip, puis appuyez sur la touche Tab. Cela place le curseur dans le champ de valeur de la ligne de descripteur de type.
10.Choisissez xs:positiveInteger depuis le menu déroulant qui apparaît et confirmer avec Enter.
Vous disposez maintenant d'un type complexe appelé US-Address, qui est basé sur le type complexe AddressType et s'étend pour pouvoir contenir un code postal.
Types simples globaux
De même que le type complexe US-Address est basé sur le type complexe AddressType, un élément peut aussi être basé dur un type simple. L'avantage est le même que pour les types complexes globaux : le type simple peut être réutilisé. Pour pouvoir réutiliser un type simple, celui-ci doit être défini globalement. Dans ce tutoriel, vous allez définir un modèle de contenu pour les États US en tant que type simple. Celui-ci sera utilisé en tant que base pour un autre élément
Créer un type simple global
Créer un type simple global consiste à ajouter un nouveau type simple à la liste des composants globaux, à le nommer et à définir son type de données.
Pour créer un type simple global :
1.Passer à l'Aperçu de schéma. (Si vous vous trouvez dans le mode Modèle de contenu, cliquez sur l'icône Afficher tous les globaux .)
2.Cliquez sur l'icône Apposer, et dans le menu contextuel qui apparaît, sélectionnez SimpleType.
3.Saisissez US-State en tant que le nom du simpleType récemment créé.
4.Appuyez sur Enter pour confirmer. Le type simple US-State est créé et apparaît dans la liste des types simples dans l'Assistant de saisie des composants (cliquez sur l'icône d'agrandissement de l'entrée simpleType pour le voir).
5.Dans l'Assistant de saisie Détails (voir la capture d’écran ci-dessous), placez le curseur dans le champ de valeur de restr et entrez xs:string, ou sélectionnez xs:string depuis la liste déroulante dans le champ de valeur restr.
Cela crée un type simple appelé US-State, qui est de type de données xs:string. Ce composant global peut maintenant être utilisé dans le modèle de contenu de US-Address.
Utiliser un type simple global dans un modèle de contenu
Un type simple global peut être utilisé dans un modèle de contenu pour définir le type d'un composant. Nous allons utiliser US-State pour définir un élément appelé State dans le modèle de contenu de US-Address.
Pour ce faire, procédez comme suit :
1.Dans l'Aperçu de schéma, cliquer sur l'icône Mode Modèle de contenu de US-Address.
2.Cliquez avec la touche de droite sur le compositeur de séquence inférieur et sélectionnez Ajouter enfant | Élément.
3.Saisissez State pour le nom d’élément.
4.Appuyer sur la touche Tab pour placer le curseur dans le champ de valeur de la ligne de descripteur de type.
5.À partir du menu déroulant de cette liste de choix, choisissez US-State.
L’élément State est maintenant basé sur le type simple US-State.
Créer un second type complexe basé sur AddressType
Nous allons maintenant créer un type complexe global pour contenir des adresses UK (du Royaume-Uni). Le type complexe est basé sur AddressType et est étendu pour correspondre au format d'adresses UK.
Pour ce faire, procédez comme suit :
1.Dans l'Aperçu de schéma, créer un type complexe global appelé UK-Address et basez-le sur AddressType (base=AddressType).
2.Dans le Mode Modèle de contenu de UK-Address, ajoutez un élément Code postal donnez-lui un type de xs:string. Votre modèle de contenu UK-Address devrait ressembler à ceci :
Note : | dans cette section, vous créez des types globaux simples et complexes que vous utilisez ensuite dans des définitions de modèle de contenu. L'avantage des types globaux est qu'ils peuvent être réutilisés dans plusieurs définitions. |