Les espaces de nommage en CSS
Recommandation du W3C du 29 Septembre 2011
Publié le 27 juin 2012
Par
W3C CSS
Christophe F. (Traducteur)
Résumé
Statut de ce document
1. Présentation
2. Conformité
2.1. Terminologie
3. Déclarer des espaces de nommage : la règle @namespace
3.1. Syntaxe
3.2. Portée
3.3. Déclaration des préfixes
4. Noms qualifiés en CSS
Remerciements
Références
Les références normatives
Les références informatives
Résumé
Le module espace de nommage en CSS définit la syntaxe pour utiliser les espaces de nommage en CSS. Il définit la règle
@namespace qui sert à déclarer l'espace de nommage par défaut ainsi qu'à lier les espaces de nommage aux
préfixes des espaces de nommage. Elle définit également une syntaxe que d'autres spécifications peuvent adopter pour
l'utilisation de ces préfixes dans des noms qualifiés d'espaces de nommage.
Statut de ce document
Une recommandation du W3C est un document mature qui a été largement revu et il a été mis à disposition pour être implémenté.
Le W3C encourage tout le monde à mettre en œuvre cette spécification. Les commentaires peuvent être envoyés à la liste de
diffusion publique
www-style@w3.org
(
archivée)
(voir les instructions). Lorsque vous envoyez des e-mails, veuillez s'il
vous plaît rajouter le texte "CSS3-namespace" dans le sujet, de préférence comme ceci : " [css3-namespace]...
Résumé du
commentaire...".
Ce document a été revu par les membres du W3C, par des développeurs de logiciels, et par d'autres groupes du W3C et les
parties intéressées, et est approuvé par le Directeur comme recommandation du W3C. C'est un document stable qui peut être
utilisé comme référence ou cité par un autre document. Le rôle du W3C, en produisant la recommandation, est d'attirer
l'attention sur la spécification et d'en promouvoir un large déploiement. Cela améliore les fonctionnalités et
l'interopérabilité du Web.
Une
suite de tests relatives aux espaces
de nommage en CSS a été développée durant la phase de candidat à la recommandation de cette spécification CSS sur les espaces
de nommage. Un
rapport d'implémentation est également disponible.
Ce document est identique à la précédente version qui était au stade de recommandation proposée, à l'exception des
modifications rédactionnelles à la matière première, et à l'actualisation des références.
1. Présentation
Cette section n'est pas normative.
Ce module CSS consacré aux espaces de nommage, définit la syntaxe pour utiliser les espaces de nommage en CSS. Il définit
la règle
@namespace qui sert à déclarer un espace de nommage par défaut ainsi qu'à lier les espaces de nommage aux préfixes
des espaces de nommage. Il définit également une syntaxe permettant d'utiliser ces préfixes pour représenter des noms
qualifiés d'espaces de nommage. Il ne définit pas de quelle manière ces noms sont valides ou ce qu'ils veulent dire : cela
dépend de leur contexte et est définie par un langage hôte, tels que les sélecteurs (
SELECT),
qui référence la syntaxe définie dans le module CSS relatif aux espaces de nommage.
Notez qu'un client CSS qui ne supporte pas ce module doit (s'il se conforme correctement aux règles
CSS de compatibilité ascendante d'analyse syntaxique)
ignorer toutes les règles
@namespace, ainsi que toutes les règles de style qui font usage
des noms qualifiés d'espace de nommage. La syntaxe permettant de délimiter les préfixes des espaces de nommage en CSS a
été délibérément choisie de sorte que ces clients CSS ignorent les règles de style plutôt que de les appliquer de manière
incorrecte.
2. Conformité
Un document ou une application ne peut pas se conformer aux espaces de nommage CSS seul, mais peut revendiquer la conformité
aux espaces de nommage CSS si elle satisfait aux exigences de conformité de cette spécification lors de l'implémentation
des CSS ou tout autre langage hôte qui référencent de manière normative cette spécification.
La conformité aux espaces de nommage CSS est défini pour deux catégories :
-
feuille de style
-
Une feuille de style CSS
(ou un élément/unité complet d'un autre langage hôte qui référence de manière normative les espaces de nommage en CSS).
-
interpréteur
-
Quelqu'un ou quelque chose qui interprète la sémantique d'une feuille de style. (Les agents utilisateurs CSS font partie de cette catégorie.)
Les exigences de conformité sont exprimées avec une combinaison d'assertions descriptives et avec la terminologie issue
de la RFC 2119. Les mots clés "DOIT", "NE DOIT PAS", "REQUIS", "DOIT", "NE DOIT PAS", "DEVRAIT", "NE DEVRAIT PAS",
"RECOMMANDÉ", "PEUT", et "FACULTATIF" dans les parties normatives de ce document sont à interpréter comme décrit dans la
RFC 2119. Toutefois, pour ne pas nuire à la lisibilité, ces mots ne figurent pas tous en lettres majuscules dans cette
spécification. Tout le texte de cette spécification est normatif, à l'exception des sections marquées explicitement comme
non normatives, des exemples et des notes. [
RFC 2119]
Les exemples dans cette spécification sont précédés par les mots «par exemple» ou sont différenciés du texte normatif avec
l'application de la class="example", comme ceci :
Exemple I |
Ceci est l'exemple d'un exemple instructif.
|
Les notes instructives/informatives commencent par le mot « Note » et sont différenciés du texte normatif avec l'application
de la class="note", comme ceci :
|
Notez que ceci est une note d'information.
|
2.1. Terminologie
Outre les termes introduits par cette spécification, les espaces de nommage CSS utilisent la terminologie définie dans les
espaces de nommage dans XML 1.0. [
XML-NAMES] Toutefois, la syntaxe définie ici ne se limite
pas à la représentation d'éléments et de noms d'attributs XML et peut représenter d'autres types d'espaces de nommage tels
que définis par le langage hôte.
Dans les espaces de nommage CSS, un nom d'espace de nommage consistant en la chaîne vide est utilisé pour représenter
l'espace de nommage nul ou l'absence d'un espace de nommage.
Par exemple, étant donné les déclarations d'espace de nommage suivantes :
Exemple II |
@namespace empty "";
@namespace "";
|
3. Déclarer des espaces de nommage : la règle @namespace
La règle
at-rule
@namespace déclare un préfixe d'espace de nommage et l'associe à un nom d'espace de nommage donné (une
chaîne). Ce préfixe d'espace de nommage peut ensuite être utilisé dans les noms qualifiés d'espaces de nommage tels que
les
noms qualifiés CSS définis ci-dessous.
Exemple III |
@namespace "http://www.w3.org/1999/xhtml";
@namespace svg "http://www.w3.org/2000/svg»;
|
La première règle déclare l'espace de nommage par défaut http://www.w3.org/1999/xhtml pour qu'il soit
appliqué à des noms qui n'ont pas de composante d'espace de nommage explicites.
La deuxième règle déclare le préfixe d'espace de nommage svg qui est utilisé pour appliquer l'espace de nommage
http://www.w3.org/2000/svg dans lequel le préfixe d'espace de nommage svg est utilisé.
Dans les espaces de nommage CSS, comme dans les espaces de nommage pour XML 1.0, le préfixe est simplement une construction
syntaxique ; c'est le nom étendu (le tuple de nom local et le nom de l'espace de nommage) qui est important. Ainsi, les
préfixes réels utilisés dans une feuille de style CSS, et s'ils sont en souffrance/par défaut ou non, sont indépendants
des préfixes des espaces de nommage utilisés dans le balisage et s'ils sont en souffrance/par défaut ou non.
Par exemple, étant donné le document XML suivant :
Exemple IV |
< qml : elem xmlns : qml = " http://example.com/q-markup " > < / qml : elem >
|
et les déclarations @namespace suivantes au début d'un fichier CSS :
Exemple IV |
@namespace Q "http: //example.com/q-markup»;
@namespace lq "http: //example.com/q-markup»;
|
Les sélecteurs Q|elem et lq|elem dans ce fichier CSS cibleraient tous les deux l'élément
<qml:elem> (le sélecteur qml|elem serait invalide).
3.1. Syntaxe
namespace
: NAMESPACE_SYM S * [namespace_prefix S*]? [STRING|URI] S* ';' S*
;
namespace_prefix
: IDENT
;
|
avec le nouveau jeton :
@ {N} {A} {M} {E} {S} {P} {A} {C} {E} {return NAMESPACE_SYM;}
|
Les règles @namespace doivent suivre toutes les règles @charset et @import et précéder toutes les autres
règles at-rules non ignorées ainsi que l'ensemble des autres règles dans une feuille de style. Pour la syntaxe CSS cela
ajoute [ namespace [S|CDO|CDC]* ]* immédiatement après [ import [S|CDO|CDC]* ]* dans les
règles grammaticales des feuilles de style.
Une règle
@namespace syntaxiquement invalide (si elle n'est pas formée correctement ou placée au mauvais
endroit) doit être
ignorée.
Une
feuille de style CSS
contenant une règle
@namespace invalide n'est pas une
feuille de style valide.
Une chaîne d'URI analysée à partir de la syntaxe des URI doit être traitée comme une chaîne littérale : de la même manière
qu'avec la syntaxe relative aux chaînes de caractère, aucune normalisation spécifique aux URI n'est appliquée.
Toutes les chaînes, y compris la chaîne vide et les chaînes représentant des URI invalides, sont des noms d'espaces de
nommage valides dans les déclaration @namespace.
3.2. Portée
Le préfixe de l'espace de nommage n'est déclaré que dans la feuille de style dans laquelle sa règle @namespace
apparaît. Il n'est pas déclaré dans les feuilles de style qui importent ou qui sont importées par cette feuille de style,
ni dans aucune autre feuille de style s'appliquant au document.
3.3. Déclaration des préfixes
Un
préfixe d'espace de nommage, une fois déclaré, représente l'espace de nommage pour lequel il a été déclaré
et peut être utilisé pour indiquer l'espace de nommage d'un nom qualifié d'espace de nommage. Les préfixes d'espace de
nommage sont,
comme les noms de
compteurs en CSS, sensibles à la casse.
Si dans la déclaration de l'espace de nommage, le préfixe de l'espace de nommage est omis, alors l'espace de nommage ainsi
déclaré est l'espace de nommage par défaut.
L'espace de nommage par défaut peut s'appliquer à des noms qui
n'ont pas de préfixe d'espace de nommage explicite : les modules qui utilisent des préfixes d'espace de nommage doivent
définir dans quels contextes l'espace de nommage par défaut s'applique. Par exemple, suivant [
XML-NAMES],
pour les sélecteurs [
SELECT] l'espace de nommage par défaut s'applique aux sélecteurs de types,
mais ne s'applique pas aux sélecteurs d'attribut. Il n'y a pas de valeur par défaut pour l'espace de nommage par défaut :
les modules qui assignent des noms qualifiés à l'espace de nommage par défaut doivent définir comment ces noms non qualifiés
sont à interpréter lorsqu'aucun espace de nommage par défaut n'est déclaré.
|
Notez que l'utilisation d'espaces de nommage par défaut conjointement avec les sélecteurs de type peut conduire à une
interprétation différente des sélecteurs entre les agents utilisateurs qui gèrent les espaces de nommage par défaut et
ceux qui ne les gèrent pas.
|
Si un préfixe d'espace de nommage ou un espace de nommage par défaut est déclaré plus d'une fois, seul la dernière
déclaration doit être utilisée. Déclarer un préfixe d'espace de nommage ou un espace de nommage par défaut plus d'une fois
n'est pas conforme.
4. Noms qualifiés en CSS
Un nom qualifié en CSS est un nom explicitement situé à l'intérieur d'un espace de nommage (associé à). Pour former un nom
qualifié dans la syntaxe CSS, un préfixe d'espace de nommage qui a été déclaré à l'intérieur de l'espace est préfixé à un
nom local (tel qu'un élément ou un nom d'attribut), séparés par une "barre verticale" (|, U+007C). Le préfixe,
représentant l'espace de nommage pour lequel il a été déclaré, indique l'espace de nommage du nom local. Le préfixe d'un
nom qualifié peut être omis pour indiquer que le nom n'appartient à aucun espace de nommage, c'est-à-dire que le nom de
l'espace de nommage qui fait partie du nom étendu, n'a pas de valeur. Certains contextes (tels que définis par le langage
hôte) peuvent autoriser l'utilisation d'un astérisque (*, U+002A) comme préfixe joker pour indiquer un nom dans n'importe
quel espace de nommage, en y incluant l'absence d'espace de nommage.
Étant donné les déclarations d'espace de nommage suivantes :
Exemple V |
@namespace toto "http: //toto.example.org";
@namespace "http: //example.com/foo";
|
Dans un contexte où l'espace de nommage par défaut s'applique
-
toto|A
- représente le nom A dans l'espace de nommage http://toto.example.org.
-
|B
- représente le nom B qui n'appartient à aucun espace de nommage.
-
*|C
-
représente le nom C dans n'importe quel espace de nommage, en y incluant l'absence d'espace de nommage.
-
D
- représente le nom D dans l'espace de nommage http://example.com/foo.
La syntaxe pour la partie d'un nom qualifié en CSS se situant avant le nom local est donné ci-dessous, à la fois pour les
noms qualifiés qui autorisent les préfixes joker (
wqname) et pour les noms qualifiés qui interdisent les
préfixes joker (
qname). (La syntaxe utilise la notation de l'
annexe grammaticale CSS 2.1. [
CSS21] Notez que cela signifie
que les commentaires, sont implicitement autorisés entre les jetons, mais pas les espace blanc) :
qname_prefix
: [Namespace_prefix]? '|'
;
wqname_prefix
: Namespace_prefix? '|'
| '*' '|'
;
|
Les noms qualifiés en CSS peuvent être utilisés par exemple dans les sélecteurs et les valeurs des propriétés tel que cela
est décrit dans d'autres modules. Ces modules doivent définir la manière dont sont gérés les préfixes d'espaces de nommage
qui n'ont pas été déclarés correctement. Cette gestion devrait traiter les préfixes d'espace de nommage non déclarés comme
une erreur d'analyse qui va avoir pour effet que le sélecteur ou la déclaration (etc) soit considérée comme invalide, et
donc
ignoré dans CSS.
Par exemple, le module Sélecteurs [
SELECT] précise qu'un sélecteur de type avec un préfixe
d'espace de nommage non déclaré est un sélecteur invalide, et CSS [
CSS21] requiert que les
jeux de règles avec un sélecteur invalide soient totalement ignorés.
Remerciements
Ce projet s'inspire largement de brouillons antérieurs relatifs aux espaces de nommage en CSS, soutenus par Chris Lilley
et par Peter Linss ainsi que d'anciens projets (non publiés) sur CSS et XML par Håkon Lie et Bert Bos, et sur les espaces
de nommage en XML et CSS par Bert Bos et Steven Pemberton. Beaucoup de membres actuels et anciens du Groupe de travail CSS
ont contribué à ce document. Les discussions sur www-style@w3.org et dans d'autres lieux ont également apporté des idées
à cette spécification. Des remerciements tout particuliers vont à L. David Baron, Karl Dubost, Ian Hickson, Bjoern Höhrmann,
et Lachlan Hunt pour leurs commentaires.
Références
Les références normatives
-
[CSS21]
-
Bert Bos;. Et al Cascading Style Sheets niveau 2 révision 1 (CSS 2.1) Spécification. 7 Juin 2011. Recommandation du W3C.
URL: http://www.w3.org/TR/2011/REC-CSS2-20110607
-
[RFC2119]
-
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels (mots clés à utiliser dans les RFC pour indiquer les
niveaux d'exigence). Internet RFC 2119. URL: http://www.ietf.org/rfc/rfc2119.txt
-
[XML-NAMES]
-
Tim Bray, et al. Namespaces in XML 1.0 (troisième édition). 8 Décembre 2009. Recommandation du W3C. URL:
http://www.w3.org/TR/2009/REC-xml-names-20091208/
Les références informatives
-
[SELECT]
-
Tantek Çelik;. et al Selectors Level 3 Sélecteurs niveau 3. 29 Septembre 2011. Recommandation du W3C.
URL: http://www.w3.org/TR/2011/REC-css3-selectors-20110929
|
Ce document est une traduction d'une spécification du W3C dont vous trouverez la version originale ici : http://www.w3.org/TR/css3-namespace.
Seule cette version anglaise a une valeur normative.
Cette version française peut contenir des erreurs.
Ce document a été traduit par ??????. Il a fait l'objet d'une relecture anglais/français par ????? et ?????. Et a fait l'objet
d'une relecture orthographique par ??????. Merci à eux.
Vous trouverez plus d'informations sur l'équipe de traduction sur cette page : ??????
|
|
Attention : ceci est une version de travail qui peut être mise à jour, remplacée ou dépréciée à tout moment. Pour
consulter la dernière version à jour de ce document veuillez consulter le site du W3C : http://www.w3.org/Style/CSS/current-work
|