Résumé
Avant même de définir des types, un schéma définit un vocabulaire (d'éléments et d'attributs). A l'imitation de l'anglais, on parle d'"espace de noms" (namespace). L'utilisateur d'un schéma finit un jour ou l'autre par être en contact avec ces noms (exemple: un éditeur XML). Le développeur travaille tout le temps avec. C'est ici qu'il faut réfléchir au choix de la langue, des conventions textuelles, du vocabulaire...
Eléments et attributs xml sont une suite de caractères Unicode. En théorie on peut définir des noms accentués ou en chinois (à la condition qu'ils ne commencent pas par un nombre). En pratique, il vaut mieux éviter les caractères susceptibles d'erreurs de transcodage. Un schéma à vocation internationale aura intérêt à choisir des noms en anglais. Toutefois les syntaxes structurées par types permettent de définir des motifs dont les noms sont modifiables, voire localisables. Les variations de casse sont autorisées et souvent employées. Le W3C semble préférer les noms composés en minuscule, les développeurs sont adeptes des noms Java, la convention SGML des noms d'éléments en majuscule parait moins nécessaire avec les éditeurs mettant la syntaxe en couleur (<nom/><nom-classe/><camelCase/><DESUET/>).
Dans le principe, un schéma définit un espace de noms (comme pour tout langage automatique). Cette collection de mots réservés peut être "qualifiée" par une URI, afin de permettre la cohabitation de plusieurs schemas dans un même document. Ainsi, dans la biographie d'un artiste, on pourra utiliser une même balise "titre", pour le titre d'une monographie, ou le titre d'une oeuvre citée.
<livre xmlns="http://www.bib.org/monographie">
<!-- déclaration locale d'espace de noms,
transmise aux enfants ne déclarant pas d'attribut xmlns="..." -->
<titre>
<!-- titre de livre -->
Le Musée Imaginaire
</titre>
<auteur>André Malraux</auteur>
<références>
<œuvre xmlns="http://www.arts.org/peinture">
<titre>
<!-- titre de peinture -->
La Joconde
</titre>
<auteur>Léonard de Vinci</auteur>
</œuvre>
</références>
</livre>
Afin d'éviter la répétition systématique de l'URI, il peut être attribué un préfixe (modifiable) pour toute le document.
<bib:livre xmlns:art="http://www.arts.org/peinture" xmlns:bib="http://www.bib.org/monographie">
<!-- déclarations globale d'espaces de noms -->
<bib:titre>
<!-- titre de livre -->
Le Musée Imaginaire
</bib:titre>
<bib:auteur>André Malraux</bib:auteur>
<bib:références>
<art:œuvre>
<art:titre>
<!-- titre d'oeuvre plastique -->
La Joconde
</art:titre>
<art:auteur>Léonard de Vinci</art:auteur>
</art:œuvre>
<p:œuvre xmlns:p="http://www.arts.org/peinture">
<p:titre>
<!-- titre d'oeuvre plastique selon un autre préfixe -->
Masque Dogon
</p:titre>
<p:description>
dim : 1015x230mm
</p:description>
<p:note>
Remarqué par <b>André MALRAUX</b> dans le <i>Musée Imaginaire</i>.
</p:note>
</p:œuvre>
</bib:références>
</bib:livre>
La définition d'un espace de noms est identifiée par une chaîne de caractères de type URI. Il peut y être associé un préfixe conventionnel et modifiable (ex: xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ). Cette souplesse permet de choisir des noms simples, sans craindre de perdre leur unicité pour un document. Cette commodité syntaxique pousse à la modularité des schémas. Il est fortement conseillé d'importer ou adapter des schémas existants, afin de profiter d'un effort de modélisation déjà effectué (et les outils associés).