Developpez.com - CSS
X

Choisissez d'abord la catégorieensuite la rubrique :


Les espaces de nommage en CSS

Recommandation du W3C du 29 Septembre 2011

Publié le 27 juin 2012

Par W3C CSSSite personnel

 Christophe F. (Traducteur)Site personnel

 

info 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 : ??????
warning 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


  1. Cette version :
    1. en http://www.w3.org/TR/2011/REC-css3-namespace-20110929/
  2. Dernière version :
    1. en http://www.w3.org/TR/css3-namespace/
  3. Version précédente :
    1. en http://www.w3.org/TR/2011/PR-css3-namespace-20110811/
  4. Rédacteurs :
    1. en Elika Etemad J.
    2. en Anne van Kesteren, Opera Software ASA
  5. Rédacteurs précédents :
    1. Peter Linss, Netscape Communications
    2. Chris Lilley, W3C
Veuillez vous référer à en l'errata de ce document, qui peut contenir des corrections normatives.

Vous pouvez également consulter la page listant les en traductions.

en Copyright © 2011 en W3C® (en MIT, en ERCIM, en Keio). Tous droits réservés. Les règles de en responsabilité, de en marque commerciale et d'en utilisation des documents du W3C s'appliquent.

    
Viadeo Twitter Facebook Share on Google+        



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

Cette section décrit le statut de ce document au moment de sa publication. D'autres documents peuvent remplacer ce document. Une liste des publications actuelles du W3C et la dernière révision de ce rapport technique peuvent être trouvées dans l'en index des rapports techniques du W3C à l'adresse http://www.w3.org/TR/.

Ce document a été produit par le en groupe de travail CSS comme une en recommandation proposée.

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 (en 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.

Ce document a été produit par un groupe opérant sous la en Politique de brevets du W3C du 5 Février 2004. Le W3C maintient une en liste publique des divulgations des brevets faites en rapport avec les produits livrables du groupe ; cette page contient également des instructions pour divulguer un brevet. Une personne qui a une réelle connaissance d'un brevet qu'il estime contenir des en revendications essentielles doit divulguer les renseignements en conformité avec en l'article 6 de la politique de brevets du W3C.

Une en 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 en 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 en 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 :

  1. feuille de style
    1. Une en 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).
  2. interpréteur
    1. Quelqu'un ou quelque chose qui interprète la sémantique d'une feuille de style. (Les en 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 :

info 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 ""; 
Les sélecteurs de type elem, |elem, et empty|elem sont équivalents.


3. Déclarer des espaces de nommage : la règle @namespace

La règle en 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

La syntaxe de la règle @namespace est la suivante (en utilisant la notation de en l'annexe grammaticale de CSS 2.1 [CSS21]) :
  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 en ignorée. Une en feuille de style CSS contenant une règle @namespace invalide n'est pas une en 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, en 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é.

info 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

  1. toto|A
    1. représente le nom A dans l'espace de nommage http://toto.example.org.
  2. |B
    1. représente le nom B qui n'appartient à aucun espace de nommage.
  3. *|C
    1. représente le nom C dans n'importe quel espace de nommage, en y incluant l'absence d'espace de nommage.
  4. D
    1. 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'en 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 en 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

  1. [CSS21] 
    1. 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
  2. [RFC2119] 
    1. 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
  3. [XML-NAMES] 
    1. 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

  1. [SELECT] 
    1. 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




info 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 : ??????
warning 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


            

Valid XHTML 1.0 TransitionalValid CSS!

Responsable bénévole de la rubrique CSS : Xavier Lecomte -