Partager via


Gestion des espaces de noms dans un document XML

Les espaces de noms XML associent des noms d’éléments et d’attributs dans un document XML à des URI personnalisés et prédéfinis. Pour créer ces associations, vous définissez des préfixes pour les URI d’espace de noms et utilisez ces préfixes pour qualifier les noms d’éléments et d’attributs dans les données XML. Les espaces de noms empêchent les collisions de noms d’élément et d’attribut, et permettent aux éléments et aux attributs du même nom d’être gérés et validés différemment.

Déclaration d’espaces de noms

Pour déclarer un espace de noms sur un élément, vous utilisez l’attribut xmlns: :

xmlns:<name>=<"uri">

<name> est le préfixe d’espace de noms et <"uri"> est l’URI qui identifie l’espace de noms. Après avoir déclaré le préfixe, vous pouvez l’utiliser pour qualifier des éléments et des attributs dans un document XML et les associer à l’URI d’espace de noms. Étant donné que le préfixe d’espace de noms est utilisé dans un document, il doit être court.

Cet exemple définit deux BOOK éléments. Le premier élément est qualifié par le préfixe, mybooket le deuxième élément est qualifié par le préfixe. bb Chaque préfixe est associé à un URI d’espace de noms différent :

<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">  
    <bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>

Pour indiquer qu’un élément fait partie d’un espace de noms particulier, ajoutez-y le préfixe d’espace de noms. Par exemple, si un Author élément appartient à l’espace mybook de noms, il est déclaré en tant que <mybook:Author>.

Étendue de déclaration

Un espace de noms est effectif à partir de son point de déclaration jusqu’à la fin de l’élément dans lequel il a été déclaré. Dans cet exemple, l’espace de noms défini dans l’élément BOOK ne s’applique pas aux éléments en dehors de l’élément BOOK , tels que l’élément Publisher :

<Author>Joe Smith</Author>  
<BOOK xmlns:book="http://www.contoso.com">  
    <title>My Wonderful Day</title>  
      <price>$3.95</price>  
</BOOK>  
<Publisher>  
    <Name>MSPress</Name>  
</Publisher>  

Un espace de noms doit être déclaré avant de pouvoir être utilisé, mais il n’est pas obligé d’apparaître en haut du document XML.

Lorsque vous utilisez plusieurs espaces de noms dans un document XML, vous pouvez définir un espace de noms comme espace de noms par défaut afin de créer un document au rendu plus épuré. L’espace de noms par défaut est déclaré dans l’élément racine et s’applique à tous les éléments non qualifiés du document. Les espaces de noms par défaut s’appliquent uniquement aux éléments, pas aux attributs.

Pour utiliser l’espace de noms par défaut, omettez le préfixe et le signe deux-points dans la déclaration de l’élément :

<BOOK xmlns="http://www.contoso.com/books.dtd">  
...
</BOOK>

Gestion des espaces de noms

La XmlNamespaceManager classe stocke une collection d’URI d’espace de noms et leurs préfixes, et vous permet de rechercher, d’ajouter et de supprimer des espaces de noms de cette collection. Dans certains contextes, cette classe est nécessaire pour améliorer les performances de traitement XML. Par exemple, la classe XsltContext utilise XmlNamespaceManager pour la prise en charge de XPath.

Le gestionnaire d’espaces de noms n’effectue aucune validation sur les espaces de noms, mais suppose que les préfixes et les espaces de noms ont déjà été vérifiés et conformes à la spécification des espaces de noms W3C .

Remarque

LINQ TO XML en C# et Visual Basic n’utilisent XmlNamespaceManager pas pour gérer les espaces de noms. Consultez Utilisation des espaces de noms XML (C#) et Utilisation d’espaces de noms XML (Visual Basic) dans la documentation LINQ pour plus d’informations sur la gestion des espaces de noms lors de l’utilisation de LINQ to XML.

Voici quelques-unes des tâches de gestion et de recherche que vous pouvez effectuer avec la XmlNamespaceManager classe. Pour plus d’informations et d’exemples, suivez les liens vers la page de référence pour chaque méthode ou propriété.

À Utiliser
Ajouter un espace de noms méthode AddNamespace
Supprimer un espace de noms méthode RemoveNamespace
Rechercher l’URI de l’espace de noms par défaut Propriété DefaultNamespace
Rechercher l’URI d’un préfixe d’espace de noms méthode LookupNamespace
Rechercher le préfixe d’un URI d’espace de noms méthode LookupPrefix
Obtenir une liste des espaces de noms dans le nœud actuel méthode GetNamespacesInScope
Définir la portée d'un espace de noms Méthodes PushScope et PopScope
Vérifier si un préfixe est défini dans l’étendue actuelle méthode HasNamespace
Obtenir la table de noms utilisée pour rechercher des préfixes et des URI Propriété NameTable

Voir aussi