Introduction aux espaces de noms
Certaines parties de la documentation du module Qt XML supposent que vous êtes familiarisé avec les espaces de noms XML. Nous présentons ici une brève introduction ; passez aux conventions de la documentationQt XML si vous connaissez déjà ce matériel.
Les espaces de noms sont un concept introduit dans XML pour permettre une conception plus modulaire. Grâce à eux, les logiciels de traitement des données peuvent facilement résoudre les conflits de noms 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>
Nous trouvons ici trois utilisations différentes du nom " titre". Si vous souhaitez traiter ce document, vous rencontrerez des problèmes car chacun des titres doit être affiché d'une manière différente, même s'ils portent le même nom.
La solution serait de 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 de l'espace de noms d'un livre pour le distinguer, par exemple, du titre d'un chapitre, par exemple :
<book:title>Practical XML</book:title>
book est dans ce cas un préfixe désignant l'espace de nommage.
Avant de pouvoir appliquer un espace de noms aux noms d'éléments ou d'attributs, nous devons 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 est simplement utilisé pour fournir un nom unique.
Les espaces de noms sont déclarés de la même manière que les attributs ; à proprement parler, il s 'agit d' attributs. Pour faire, par exemple, de http://www.example.com/fnord/ l'espace de noms XML par défaut du document xmlns, nous écrivons
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 fournir un préfixe :
xmlns:book="http://example.com/fnord/book/"
Un espace de noms ainsi déclaré peut être appliqué aux noms d'éléments et d'attributs en les précédant du préfixe approprié et d'un délimiteur " :". Nous avons déjà vu cela 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 élément doivent être différents. Nous verrons plus loin comment attribuer un espace de noms XML à un attribut.
Étant donné que les attributs sans préfixe ne font partie d'aucun espace de noms XML, il n'y a pas de collision entre l'attribut title (qui appartient à l'élément author ) et, par exemple, l'élément title 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>
Dans 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 approprié et, bien sûr, au document lui-même.
Les éléments book:author et book:title appartiennent à l'espace de noms avec l'URI http://www.example.com/fnord/book/.
Les deux attributs book:author title et name n'ont pas d'espace de noms XML. Ils sont uniquement membres de l'espace de noms "traditionnel" de l'élément book:author, ce qui signifie que, par exemple, deux attributs title dans book:author sont interdits.
Dans l'exemple ci-dessus, nous contournons la dernière règle en ajoutant un attribut title de l'espace de noms http://www.example.com/fnord/ à book:author: le fnord:title provient de l'espace de noms avec le préfixe fnord qui est déclaré dans l'élément book:author.
Il est clair que l'espace de noms fnord a le même URI 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 ;
- en outre, l'omission du préfixe entraînerait un conflit titre-titre;
- en l'écrivant comme xmlns:title, on déclare un nouvel espace de noms avec le préfixe title au lieu d'appliquer l'espace de noms xmlns par défaut.
Les classes Qt XML permettent d'accéder aux éléments et aux attributs de deux manières : soit en se référant à leur nom qualifié composé du préfixe de l'espace de noms et du nom "réel" (ou nom local ), soit en combinant le nom local et l'URI de l'espace de noms.
De plus amples informations sur les espaces de noms XML sont disponibles à l'adresse suivante : http://www.w3.org/TR/REC-xml-names/.
Conventions utilisées dans la documentation de Qt XML
Les termes suivants sont utilisés pour distinguer les 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é).
- Le préfixe d'un espace de noms dans un nom qualifié est la partie située à gauche du " :"(book est le préfixe de l'espace de noms dans book:title).
- 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 de l'espace de noms ("Uniform Resource Identifier") est un identifiant unique pour un espace de noms. Il ressemble à un URL (par exemple http://www.example.com/fnord/ ) mais n'exige pas que les données soient accessibles par le protocole donné à l'adresse indiqué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 chapitre).
Voir également l'application DOM Bookmarks.
© 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.