Introduction aux espaces de noms
Certaines parties de la documentation du module ` Qt XML ` partent du principe que vous maîtrisez les espaces de noms XML. Nous vous proposons ici une brève introduction ; passez directement à la section « Conventions de documentation d’Qt XML » si vous maîtrisez déjà ce sujet.
Les espaces de noms sont un concept introduit dans XML afin de permettre une conception plus modulaire. Grâce à eux, les logiciels de traitement de données peuvent facilement résoudre les conflits de nommage dans les documents XML.
Prenons l'exemple suivant :
<document>
<book>
<title>Practical XML</title>
<author title="Ms" name="Eris Kallisti"/>
<chapter>
<title>A Namespace Called fnord</title>
</chapter>
</book>
</document>On trouve ici trois utilisations différentes du nom « title ». Si vous souhaitez traiter ce document, vous rencontrerez des problèmes car chacun de ces titres doit être affiché différemment, même s'ils portent le même nom.
La solution consisterait à disposer d’un moyen d’identifier la première occurrence de « title » comme étant le titre d’un livre, c’est-à-dire d’utiliser l’élément « title » d’un espace de noms « livre » pour le distinguer, par exemple, du titre d’un chapitre, comme suit :
<book:title>Practical XML</book:title>Dans ce cas, «book » est un préfixe désignant l'espace de noms.
Avant de pouvoir appliquer un espace de noms aux noms d'éléments ou d'attributs, il faut le déclarer.
Les espaces de noms sont des URI, comme http://www.example.com/fnord/book/. Cela ne signifie pas que les données doivent être disponibles à cette adresse ; l'URI sert simplement à fournir un nom unique.
On déclare les espaces de noms de la même manière que les attributs ; à proprement parler, ce sont des attributs. Pour faire, par exemple, de http://www.example.com/fnord/ l'espace de noms XML par défaut du document ( xmlns ), on écrit
xmlns="http://example.com/fnord/"Pour distinguer l'espace de noms http://www.example.com/fnord/book/ de l'espace de noms par défaut, nous devons lui attribuer un préfixe :
xmlns:book="http://example.com/fnord/book/"Un espace de noms déclaré de cette manière peut être appliqué aux noms d’éléments et d’attributs en leur ajoutant le préfixe approprié suivi du délimiteur « : ». Nous l’avons déjà vu avec l’élément book:title.
Les noms d’éléments sans préfixe appartiennent à l’espace de noms par défaut. Cette règle ne s’applique pas aux attributs : un attribut sans préfixe n’appartient à aucun des espaces de noms XML déclarés. Les attributs appartiennent toujours à l’espace de noms « traditionnel » de l’élément dans lequel ils apparaissent. Un espace de noms « traditionnel » n’est pas un espace de noms XML ; cela signifie simplement que tous les noms d’attributs appartenant à un même élément doivent être différents. Nous verrons plus tard comment attribuer un espace de noms XML à un attribut.
Étant donné que les attributs sans préfixe n'appartiennent à aucun espace de noms XML, il n'y a pas de conflit entre l'attribut « title » (qui appartient à l'élément « author » ) et, par exemple, l'élément « title » au sein d'un chapitre.
Clarifions cela à l'aide d'un exemple :
<document xmlns:book = 'http://example.com/fnord/book/'
xmlns = 'http://example.com/fnord/' >
<book>
<book:title>Practical XML</book:title>
<book:author xmlns:fnord = 'http://example.com/fnord/'
title="Ms"
fnord:title="Goddess"
name="Eris Kallisti"/>
<chapter>
<title>A Namespace Called fnord</title>
</chapter>
</book>
</document>Au sein de l'élément « document », deux espaces de noms sont déclarés. L'espace de noms par défaut « http://www.example.com/fnord/ » s'applique à l'élément « book », à l'élément « chapter », à l'élément « title » correspondant et, bien sûr, au document lui-même.
Les éléments `book:author` et ` book:title ` appartiennent à l'espace de noms dont l'URI est http://www.example.com/fnord/book/.
Les deux attributs « title » et « name » de l’élément `book:author ` ne se voient attribuer aucun espace de noms XML. Ils font uniquement partie de l’espace de noms « traditionnel » de l’élément `book:author`, ce qui signifie, par exemple, que la présence de deux attributs « title » dans `book:author ` est interdite.
Dans l’exemple ci-dessus, nous contournons cette dernière règle en ajoutant à l’élément « book:author » un attribut « title » issu de l’espace de noms « http://www.example.com/fnord/ »: l’attribut « fnord:title » provient de l’espace de noms dont le préfixe « fnord » est déclaré dans l’élément « book:author ».
Il est clair que l’espace de noms fnord possède la même URI d’espace de noms que l’espace de noms par défaut. Alors pourquoi n’avons-nous pas simplement utilisé l’espace de noms par défaut que nous avions déjà déclaré ? La réponse est assez complexe :
- les attributs sans préfixe n’appartiennent à aucun espace de noms XML, pas même à l’espace de noms par défaut ;
- de plus, omettre le préfixe entraînerait un conflit entre « title » et « title »;
- l'écrire sous la forme xmlns:title reviendrait à déclarer un nouvel espace de noms avec le préfixe title au lieu d'appliquer l'espace de noms xmlns par défaut.
Avec les classes « Qt XML », les éléments et les attributs sont accessibles de deux manières : soit en faisant référence à leurs noms qualifiés, composés du préfixe d’espace de noms et du nom « réel » (ou nom local ), soit par la combinaison du nom local et de l’URI de l’espace de noms.
Pour plus d’informations sur les espaces de noms XML, consultez la page http://www.w3.org/TR/REC-xml-names/.
Conventions utilisées dans la documentation d'Qt XML
Les termes suivants sont utilisés pour distinguer les différentes parties des noms dans le contexte des espaces de noms :
- Le nom qualifié est le nom tel qu'il apparaît dans le document. (Dans l'exemple ci-dessus, book:title est un nom qualifié.)
- Dans un nom qualifié, le préfixe d’espace de noms est la partie située à gauche du « : ». (Dans book:title, «book » est le préfixe d’espace de noms.)
- La partie locale d’un nom (également appelée « nom local ») apparaît à droite du « : ». (Ainsi, « title » est la partie locale de « book:title ».)
- L’URI («Uniform Resource Identifier») d’un espace de noms est un identifiant unique pour cet espace de noms. Il ressemble à une URL (par exemple http://www.example.com/fnord/ ), mais n’implique pas que les données soient accessibles via le protocole indiqué à l’adresse mentionnée.
Les éléments sans « : » (comme chapter dans l’exemple) n’ont pas de préfixe d’espace de noms. Dans ce cas, la partie locale et le nom qualifié sont identiques (c’est-à-dire chapter).
Voir également l'application « Signets DOM ».
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.