Exemples d'édition et de validation de fichiers XML

Ces exemples vous montrent comment éditer et valider des fichiers XML avec quelques unes des fonctions d'édition guidée de l'éditeur XML. Pour plus d'informations sur l'édition de fichiers XML avec des contraintes DTD ou de schéma XML, consultez l'aide en ligne de l'éditeur XML.
Exemple Description
Elément any

Exemple avancé qui montre comment étendre le modèle de contenu d'un document XML à l'aide de l'élément any de la spécification de schéma XML.

Edition de PurchaseOrder.xml

Montre comment utiliser un fichier de schéma XML (PurchaseOrder.xsd) pour fournir une assistance lors de l'édition d'un fichier XML (PurchaseOrder.xml).

Le répertoire international montre comment construire un type dérivé et utiliser l'attribut xsi:type dans le document d'instance XML.

L'exemple report.xsd montre comment utiliser plusieurs schémas issus de différents espaces de noms.

Utilisation de groupes de substitution Montre comment un schéma XML permet de substituer des groupes nommés d'éléments à d'autres éléments.

Elément any

Cet exemple vous montre comment créer un modèle de contenu extensible dans votre document XML en utilisant l'élément any dans le schéma XML. Il est divisé en deux répertoires :
  1. anyNamespace - montre comment utiliser l'espace de noms ##any
  2. specifiedNamespace - montre comment utiliser un espace de noms spécifique

Utilisation de l'espace de noms ##any

Le schéma Book.xsd dans le répertoire anyNamespace comporte le type complexe BookType. Le contenu de ce type est title, author, year et isbn, facultativement suivis de tout code XML bien formé comme indiqué par l'élément any : <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>

Cela signifie que nous pouvons introduire n'importe quel élément XML dans un document d'instance pour étendre la définition de BookType. Dans cet exemple, nous avons deux autres schémas : Publisher.xsd et Reviewer.xsd. Nous allons les utiliser pour étendre la définition de BookType dans nos documents d'instance. Notez que ces deux schémas se trouvent dans des espaces de noms différents.

BookRev.xml est associé à la fois à Book.xsd et à Reviewer.xsd par l'attribut xsi:schemaLocation. Il montre comment étendre BookType avec un élément reviewer (réviseur) pour les commentaires de révision du livre.
  1. Dans la vue Conception de l'éditeur XML, sélectionnez l'élément opensource:reviewer. Dans le menu contextuel, sélectionnez Ajouter un enfant > Commentaire pour ajouter un commentaire pour le réviseur.
  2. Exécutez Valider - le document est valide car l'élément reviewer respecte la contrainte définie dans le fichier Reviewer.xsd.
BookPub.xml est associé à la fois à Book.xsd et à Publisher.xsd par l'attribut xsi:schemaLocation. Il montre comment étendre BookType avec un élément company pour indiquer l'éditeur du livre.
  1. Dans la vue Conception de l'éditeur XML, sélectionnez l'élément pub:company. Dans le menu contextuel, sélectionnez Supprimer pour le retirer.
  2. Exécutez Valider - le document est valide car l'élément any est facultatif.

Utilisation d'un espace de noms spécifique

Le schéma Book.xsd dans le répertoire specifiedNamespace comporte le type complexe BookType. Le contenu de ce type est title, author, year et isbn, facultativement suivis de tout code XML bien formé appartenant à l'espace de noms http://www.wesley.com comme indiqué par l'élément any : <any namespace="http://www.wesley.com" minOccurs="0" maxOccurs="unbounded"/>

Cela signifie que nous pouvons introduire n'importe quel élément XML dans un document d'instance pour étendre la définition de BookType, à condition qu'il appartienne à l'espace de noms http://www.wesley.com. Dans cet exemple, le fichier Reviewer.xsd appartient à cet espace de noms.

Book.xml est associé à la fois à Book.xsd et à Reviewer.xsd par l'attribut xsi:schemaLocation. Il montre comment étendre BookType avec un élément reviewer (réviseur) pour les commentaires de révision du livre.

Pour Book.xml, dans la vue Conception de l'éditeur XML, sélectionnez l'élément rev:reviewer. Dans le menu contextuel, sélectionnez Ajouter un enfant > Commentaire pour ajouter un commentaire pour le réviseur. Exécutez Valider pour vérifier que le document est valide.

Génération d'instances à partir de schémas comportant un élément any

Vous pouvez créer une instance d'un schéma XML à l'aide de l'assistant Nouveau fichier XML.
  1. Dans la vue Navigateur, sélectionnez l'objet Book.xsd dans le répertoire "specifiedNamespace". Cliquez dessus avec le bouton droit de la souris et sélectionnez Générer > Fichier XML pour lancer l'assistant Nouveau fichier XML.
  2. Sur la première page de l'assistant, indiquez comme nom pour le nouveau fichier Book1.xml. Cliquez sur Suivant.
  3. Vous remarquerez que la zone de groupe Informations de schéma XML contient un tableau indiquant deux espaces de noms. Le premier est celui qui correspond à Book.xsd, et le deuxième celui qui auquel fait référence l'élément any dans Book.xsd.
  4. Cliquez sur Terminer.

Ajout d'espaces de noms à un document XML

L'éditeur XML offre un mécanisme pratique pour ajouter des espaces de noms à un document XML. Ajouter des espaces de noms manuellement (en les saisissant dans la vue source) peut être une source d'erreurs ; les URI d'espace de noms de schéma peuvent facilement être mal saisis et la syntaxe de l'attribut d'emplacement de schéma peut être délicate. Une boîte de dialogue d'assistance est fournie. Il s'agit de la boîte de dialogue Editer les espaces de noms, accessible depuis les vues Structure et Conception.
  1. Ouvrez le fichier BookPub.xml dans le répertoire anyElement/anyNamespace.
  2. Cliquez avec le bouton droit de la souris sur un élément racine et sélectionnez l'option de menu Editer les espaces de noms.
  3. Cliquez sur Ajouter pour afficher une boîte de dialogue de saisie des informations d'un nouvel espace de noms.
  4. Sélectionnez Spécifier le nouvel espace de noms. Cliquez sur Parcourir et localisez le fichier Reviewer.xsd dans le répertoire anyNamespace.
  5. Renseignez les zones Préfixe et Nom de l'espace de noms.
  6. Cliquez sur OK deux fois. Vous remarquerez qu'un attribut xmlns:openSource a été ajouté et que la valeur de l'attribut xsi:schemalocation a été mise à jour.
  7. Maintenant que l'espace de noms a été ajouté, vous remarquerez que lorsque vous cliquez avec le bouton droit sur l'élément pub:company et que vous sélectionnez l'option Ajouter avant ou Ajouter après, vous pouvez ajouter des éléments de l'espace de noms Reviewer.xsd (http://www.apache.com).

Edition de PurchaseOrder.xml

Le fichier PurchaseOrder.xsd contient les règles pour la définition du contenu de PurchaseOrder.xml. Il est associé à ce dernier par l'attribut xsi:schemaLocation.

Contraintes d'occurrence

Dans PurchaseOrder.xsd, l'élément item (dans le type complexe Items) comporte un élément shipDate facultatif avec minOccurs=0:
		<element name="shipDate" type="date" minOccurs="0"/>

Pour PurchaseOrder.xml, dans la vue Conception de l'éditeur XML, sélectionnez le premier élément de l'élément items. Cliquez dessus avec le bouton droit de la souris et sélectionnez Ajouter un enfant > shipDate pour ajouter shipDate à l'élément item. L'élément shipDate est ajouté avec comme valeur la date courante. Remarquez que le menu contextuel Ajouter un enfant ne comporte plus l'option shipDate, la contrainte d'avoir au plus un élément shipDate étant satisfaite.

Si vous sélectionnez l'élément shipDate et que vous le retirez en sélectionnant Supprimer dans le menu contextuel, l'option Ajouter un enfant > shipDate sera à nouveau disponible.

Type d'élément énuméré

Dans PurchaseOrder.xsd, le type complexe USAddress comporte un élément state dont le type est le type simple USState :
		<element name="state" type="po:USState"/>
Le type simple USState est dérivé du type chaîne avec une facette d'énumération :
		<simpleType name="USState"> 
			<restriction base="string">
				<enumeration value="CA"></enumeration>
 				<enumeration value="PA"></enumeration>
				<enumeration value="AR"></enumeration>
			</restriction>
		</simpleType>

Pour PurchaseOrder.xml, dans la vue Conception de l'éditeur XML, sélectionnez le champ texte state dans l'élément shipTo. Une liste apparaît dans laquelle vous pouvez choisir entre les trois valeurs (CA, PA et AR) ; elle est limitée par les valeurs d'énumération du type simple USState.

Utilisation de types dérivé dans les documents d'instance (attribut xsi:type)

Le fichier ipo.xml montre comment les marchandises peuvent être livrées au Royaume-Uni et la facture envoyée à une adresse aux Etats-Unis. Dans ipo.xsd, les éléments billTo et shipTo sont définis avec le type Address :
		<element name="shipTo" type="ipo:Address"/>
		<element name="billTo" type="ipo:Address"/>

Dans address.xsd, les deux types complexes USAddress et UKAddress étendent le type de base Address.

Le document d'instance ipo.xml peut choisir d'utiliser une dérivation différente d'Address (par exemple, USAddress) en utilisant un attribut xsi:type.

Dans la vue Conception de l'éditeur XML, sélectionnez l'attribut xsi:type dans l'élément shipTo. Remarquez qu'une liste vous permet de sélectionner le type Address que vous voulez utiliser. L'assistance guidée sera basée sur le type choisi dans la zone de liste déroulante.

Utilisation de plusieurs schémas et espaces de noms

L'exemple de rapport trimestriel montre comment utiliser plusieurs schémas issus de différents espaces de noms. Il comprend les fichiers suivants dans le dossier PurchaseOrder/international : address.xsd, ipo.xsd, report.xsd et report.xml.

Lorsque les schémas grossissent, il est souvent souhaitable de répartir leur contenu entre plusieurs documents de schéma à des fins notamment de facilité de maintenance, de réutilisation et de lisibilité. XML Schema définit deux constructions pour cela : include et import. L'élément include inclut dans le schéma courant les définitions et déclarations du schéma inclus. Il nécessite que ce dernier se trouve dans le même espace de noms cible que le schéma qui l'inclut. L'élément import est similaire mais le schéma importé peut provenir d'un autre espace de noms.

Pour plus d'informations sur include et import, reportez-vous à l'aide en ligne de l'éditeur de schéma XML.

Utilisation de groupes de substitution

Le fichier Catalogue.xsd déclare Book et Magazine comme appartenant à un groupe de substitution pour Publication :
		<element name="Book" type="Catalogue:BookType"
				substitutionGroup="Catalogue:Publication"/>
		<element name="Magazine" type="Catalogue:MagazineType"
				substitutionGroup="Catalogue:Publication"/>

Le contenu de Catalogue peut être n'importe quel élément se trouvant dans le groupe de substitution. Dans la vue Conception de l'éditeur XML, sélectionnez le menu Ajouter un enfant pour l'élément Catalogue. Remarquez que vous pouvez substituer à la fois Book et Magazine comme contenu de l'élément Publication. Par ailleurs, nous avons déclaré l'élément Publication comme abstrait, pour empêcher qu'il soit utilisé directement dans le document d'instance.


Commentaires en retour