Associations d'un fichier XML avec des définitions DTD et des schémas XML

Lorsqu'un fichier XML est associé à une définition DTD ou à un schéma XML, il est lié aux éventuelles règles structurelles contenues dans la DTD ou dans le schéma XML. Pour être considéré comme un fichier XML valide, un document doit être accompagné d'une définition DTD ou d'un schéma XML, et il doit être conforme à toutes les déclarations de la définition DTD ou du schéma XML.

Il existe deux méthodes différentes pour associer des fichiers XML à des définitions DTD ou à des schémas XML.

  1. Association directe - Le fichier XML contient soit le nom d'une définition DTD dans sa déclaration DOCTYPE (par exemple, <!DOCTYPE root-element SYSTEM " dtdfile.dtd" >, où dtdfile.dtd est le nom du fichier DTD), soit le chemin d'un schéma XML dans l'attribut schemaLocation de l'élément racine du fichier XML (par exemple, <xsi:schemaLocation="http://www.ibm.com schema.xsd">, où schema.xsd est le nom du schéma XML.
  2. Entrée de catalogue XML : vous pouvez enregistrer des fichiers DTD et de schéma XML dans le catalogue XML et les associer à une Clé qui les représente. Vous pouvez ensuite vous référer à une Clé de fichier DTD ou de schéma XML depuis un fichier XML au lieu de vous référer directement au fichier DTD ou de schéma XML. Une entrée de catalogue XML comprend deux parties : la clé (représentant la définition DTD ou le schéma XML) et un identificateur URI (contenant des informations sur l'emplacement de la définition DTD ou du schéma XML).

Fonctionnement d'une association

Association d'un fichier XML avec une définition DTD
En cas d'association d'un fichier XML avec une définition DTD, une balise DOCTYPE telle que la suivante est intégrée au fichier XML :
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">

InvoiceId est l'identificateur public du fichier DTD. Ce dernier est utilisé pour associer le fichier XML à un fichier DTD (dans ce cas, le fichier DTD est Invoice.dtd). Si l'identificateur public InvoiceId correspond à la Clé de l'entrée de catalogue XML du fichier Invoice.dtd, alors l'identificateur URI de l'entrée de catalogue XML (qui contient des informations sur l'emplacement du fichier Invoice.dtd) sera utilisé pour localiser la définition DTD. Sinon, l'identificateur système du DOCTYPE ("C:\mydtds\Invoice.dtd"), qui désigne directement l'emplacement du système de fichiers de la définition DTD, est utilisé pour localiser la définition DTD.

Remarque : vous pouvez également utiliser un identificateur système comme Clé d'une entrée de catalogue XML. Dans ce cas, une balise DOCTYPE telle que la suivante est intégrée au fichier XML :

<!DOCTYPE Root-name SYSTEM "MyDTD.dtd"> 

MyDTD.dtd est l'identificateur système qui correspond à la Clé d'une entrée de catalogue XML.

Association d'un fichier XML avec un schéma XML

En cas d'association d'un fichier XML avec un schéma XML, un ou plusieurs attributs d'emplacement de schéma sont intégrés au fichier XML. Les informations de l'attribut schemaLocation sont fournies comme "astuce" au processeur XML. Les exemples suivants affichent des attributs schemaLocation.

Exemple 1
<purchaseOrder xmlns="http://www.ibm.com"
xsi:schemaLocation="http://www.ibm.com C:\myschemas\PurchaseOrder.xsd">
<shipTo country="US">
...
Exemple 2
<purchaseOrder xmlns="http://www.ibm.com"
xsi:schemaLocation="http://www.ibm.com PO.xsd">
<shipTo country="US">
....

Dans l'exemple 1, 'l'astuce' de l'attribut schemaLocation ('C:\myschemas\PurchaseOrder.xsd') désigne directement l'emplacement du système de fichiers ou l'identificateur URI du schéma XML. Dans ce cas, le fichier schéma sera localisé directement par le processeur XML.

Dans l'exemple 2, 'l'astuce' de l'attribut schemaLocation ('PO.xsd') désigne une entrée de catalogue XML. PO.xsd correspond à la Clé de l'entrée de catalogue XML de PurchaseOrder.xsd, et l'identificateur URI de l'entrée de catalogue XML (qui contient des informations sur l'emplacement du fichier PurchaseOrder.xsd) sera utilisé pour localiser le schéma XML.

Dans ces deux exemples, http://www.ibm.com dans la balise xsi:schemaLocation est un identificateur URI qui identifie l'espace de nom du schéma XML.

Vous pouvez également utiliser un espace de nom comme clé d'une entrée de catalogue XML. Dans ce cas, une balise schemaLocation telle que la suivante est intégrée dans un fichier XML :
<purchaseOrder xmlns:="www.ibm.com"
xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">

L'attribut schemaLocation pointe vers la Clé et l'emplacement réel du schéma.

La définition DTD ou le schéma XML se trouve sur un serveur distant

Plusieurs fonctions de l'éditeur XML, telles que la validation et l'assistant de contenu, nécessitent la disponibilité d'une définition DTD ou d'un schéma XML. La documentation du produit fournit des informations d'utilisation concernant le cas d'une définition DTD ou d'un schéma XML se trouvant sur votre machine local. Cependant, dans de nombreux cas, la définition DTD ou le schéma XML peut se trouver sur un serveur distant, par exemple :

<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">

Normalement, ce cas ne pose aucun problème, car la définition DTD ou le schéma XML peut être récupéré depuis le serveur distant. Cependant, si vous vous trouvez derrière un pare-feu, et que vous ne possédez pas de système SOCKSified, le plan de travail ne vous permettra pas de spécifier un serveur socks pour récupérer une définition DTD ou un schéma XML. Si vous ne pouvez pas utiliser SOCKSify sur votre système, récupérez une copie de la définition DTD ou du schéma XML (à l'aide d'un navigateur Web, par exemple) et enregistrez cette copie sur votre machine locale pour résoudre ce problème. Ensuite, vous pouvez soit placer une copie locale dans le même projet que celui de votre fichier XML, soit utiliser le catalogue XML pour associer un identificateur public avec l'emplacement (local) de la définition DTD.

Remarque : si vous possédez un fichier XML associé à un schéma XML ou une définition DTD se trouvant à un autre emplacement du réseau, et que vous travaillez sur une machine non connectée au réseau, vous pouvez suivre les étapes décrites ci-dessus si vous souhaitez utiliser l'assistant du contenu ou valider votre fichier XML.

Avantages des associations d'entrée du catalogue XML

Si vous créez un association directe entre un fichier XML et un schéma XML ou un fichier DTD, vous devrez rechercher tous les fichiers XML désignés et les mettre à jour avec le nouvel emplacement de la définition DTD ou du schéma à chaque modification de l'emplacement du schéma ou de la définition DTD. Si, en revanche, vous associez un fichier XML à un schéma XML ou une clé DTD, alors, lorsque vous modifierez l'emplacement du schéma ou de la définition DTD, vous n'aurez qu'à mettre à jour l'entrée du catalogue XML, et non pas chaque fichier XML individuellement.

Par exemple, une définition DTD appelée "Building.dtd" est associée à cinq fichiers XML : Bureau.xml, Maison.xml, Appartement.xml, Banque.xml et BureaudePoste.xml. Vous déplacez le fichier DTD Building.dtd vers un nouvel emplacement. S'il existe une association de direction entre le fichier Building.dtd et tous les fichiers XML, vous devrez mettre à jour la déclaration <DOCTTYPE> de chaque fichier XML afin qu'elle intègre le nouvel emplacement du fichier Building.dtd. Mais, s'il existe une association de catalogue XML, et que tous les fichiers XML désignent uniquement la clé du fichier Building.dtd, vous devrez alors mettre à jour uniquement l'identificateur URI, et tous les fichiers XML pointeront vers le nouvel emplacement du fichier Building.dtd.

Mise à jour d'une entrée dans le catalogue XML

Après avoir mis à jour une entrée dans le catalogue XML, vous devrez probablement actualiser la vue de l'éditeur XML de sorte qu'elle utilise les nouvelles informations. Pour y parvenir, cliquez sur le bouton Recharger les dépendances dans la barre d'outils Cette image représente le bouton Recharger les dépendances de la barre d'outils et la vue sera mise à jour à l'aide des paramètres en cours du catalogue XML. Il vous suffit d'actualiser l'éditeur XML lorsqu'un fichier XML ouvert désigne une entrée de catalogue XML qui a été mise à jour.

Pour plus d'informations, voir Tâches associées.

(c) Copyright 2001, World Wide Web Consortium (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University).

Concepts associés
L'éditeur XML
Tâches associées
Edition avec les contraintes de DTD ou de schéma XML
Edition de déclarations DOCTYPE
Ajout d'entrées dans le catalogue XML
Mise à jour de fichiers XML suite à une modification des DTD ou des schémas
Edition des informations de l'espace de nom
Edition d'instructions de traitement XML
Edition dans la vue Conception
Edition dans la vue Source