| 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. |
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.
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 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
Ajout d'espaces de noms à un document 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
<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 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 sera à nouveau disponible.
Type d'élément énuméré
<element name="state" type="po:USState"/>
<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)
<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.
<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.