Verificați erata pentru acest document, care poate să conțină corecturi normative.
Vezi deasemenea traducerile.
Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
Acest modul de spații de nume CSS definește sintaxa pentru folosirea spațiilor de nume în CSS.
Definește regula @namespace pentru declararea spațiului de nume implicit și legarea spațiilor de nume de prefixele spațiilor de nume, și desemenea
definește sintaxa pe care alte specificații pot adopta pentru folosirea acelor prefixe în numele calificat de spații de nume.
Această secțiune descrie starea acestui document la momentul publicării. Alte documente mai noi pot exista. O listă cu toate publicăriile curente W3C și ultimele revizii a acestui raport tehnic pot fi găsite în W3C technical reports index la http://www.w3.org/TR/.
Acest document a fost realizat de CSS Working Group ca parte a Proposed Recommendation.
O Recomandare W3C este un document matur care a fost revizuit de nenumărate ori și s-a dovedit a fi implementabil. W3C încurajează pe toți să implementeze această specificare. Comentariile pot fi trimise la (arhiva) lista de discuții publică www-style@w3.org (vezi instrucțiunile). Când trimiteți un e-mail, vă rugăm să puneți textul “css3-namespace” în subiect, preferabil în felul următor: “[css3-namespace] …rezumat comentariu…”
Acest document a fost revizuit de către membrii W3C, de către dezvoltatorii de software, şi de către grupuri W3C şi alte părţi interesate, şi este aprobat de către Director ca o recomandare W3C. Este un document stabil şi poate fi utilizat ca material de referinţă sau citat întru-un alt document. Rolul W3C în a face Recomandarea este de a atrage atenţia la caietul de sarcini şi de a promova implementarea sa la scară largă. Acest lucru îmbunătăţeşte funcţionalitatea şi interoperabilitatea Web-ului.
Acest document a fost produs de un grup ce operează sub 5 February 2004 W3C Patent Policy. W3C menține o listă publică cu orice informație legată de brevetele de invenție realizate în legătură cu rezultatele grupului; acea pagină conține deasemenea instrucțiuni pentru divulgarea de informații despre un brevet de invenție. O persoană care are cunoştinţă despre un brevet pe care individul crede că conţine Revendicări esenţială(e) trebuie să prezinte informaţiile în conformitate cu punctul 6 din politică a brevetelor W3C.
Un spatiu de nume CSS Test Suite a fost dezvoltat în timpul fazei de Recomandare Candidat a acestei specificații Spațiile de Nume CSS. Un raport de implementare este deasemenea disponibil.
Acest document este acelaşi ca recomandarea anterioară, versiunea de Recomandare Propusă, cu excepţia modificărilor editoriale, precum şi actualizarea de referinţe.
@namespace
Această secțiune nu este normativă.
Acest modul CSS de Spații de Nume definește sintaxa pentru folosirea spațiilor de nume în CSS.
Definește regula @namespace pentru a declara un spațiu de nume implicit și legarea spațiilor de nume de prefixele spațiilor de nume, și desemenea
definește sintaxa pe care alte specificații pot adopta pentru folosirea acelor prefixe în numele calificat de spații de nume.
Nu definește unde aceste nume sunt valide sau ce reprezintă: asta depinde de contextul lor și este definită de o limbă gazdă,
cum ar fi Selectors ([SELECT]),
referențiere la sintaxa definită în modulul CSS de Spații de Nume.
Observați că un client CSS care nu suportă acest modul va (
dacă se conformează corect la regulile de parsare compatibile a CSS-ului) ignora toate regulile @namespace
, la fel și toate regulile de stilizare care se folosesc de numele calificate de spații de nume.
Sintaxa de delimitare a prefixelor spațiilor de nume în CSS a fost în mod deliberat ales astfel încât acești clienți CSS să ignore regulili de stil
în loc să le potrivească incorect.
Un document sau o implementare nu se poate conforma singur la Spațiile de Nume CSS, dar poate să solicite conformanța la Spațiul de Nume CSS dacă satisface cerințele de conformitate când implementează CSS sau un alt limbaj gazdă care referențiază în mod normativ acestă specificație.
Conformitatea la Spațiile de Nume CSS este definită pentru două clase:
Cerințele de conformitate sunt exprimate cu o combinație de aserții descriptive și terminologie RFC 2119. Cuvintele cheie "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", și "OPTIONAL" în părțile normative a acestui document sunt interpretate așa cum este descris în RFC 2119. Oricum, pentru lizibilitate, aceste cuvinte nu apar cu toate literele mari în această specificație. Tot textul din această specificație este normativ cu excepție secțiunile marcate în mod explicit ca find ne-normative, exemplele, și mențiunile. [RFC2119]
Exemplele din această specificare sunt introduse cu cuvintele "de exemplu" sau sunt un set separat de textul normativ
cu class="example", în felul următor:
Acesta este un exemplu de exemplu informativ.
Mențiunile informative încep cu cuvântul "Mențiune" și sunt un set separat de textul normativ cu class="note", în felul următor:
Mențiune, acesta este o mențiune informativă.
În afară de termenii introdusi de această specificație, Spațiul de Nume CSS folosește terminologia definită în Spațiul de Nume din XML 1.0. [XML-NAMES] Oricum, sintaxa defintă aici nu este restricționată la reprezentarea de element XML și numele de atribute și poate reprezenta alte tipuri de spații de nume așa cum este definit de către limbajul gazdă.
În Spațiul de Nume CSS a numelor de spații de nume a unui șir de caractere gol este folosit la reprezentarea spațiilor de nume goale sau lipsa unui spațiu de nume.
De exemplu, dat declarațiile de spațiu de nume:
@namespace empty ""; @namespace "";
Selectorii tip elem, |elem, și
empty|elem sunt echivalenți.
@namespace rule@namespace at-rule
declară un prefix de spațiu de nume și asociază cu el un anumit nume de spațiu de nume (un șir de caractere).
Acest prefix de spațiu de nume poate atunci fi folosit în numele calificate de spații de nume cum ar fi
Numele calificate CSS definite mai jos.
@namespace "http://www.w3.org/1999/xhtml"; @namespace svg "http://www.w3.org/2000/svg";
Prima regulă declară un spațiu de nume inițial
http://www.w3.org/1999/xhtml care să fie aplicat la numele care nu au în mod explicit componenta de spațiu de nume.
A doua regulă declară un prefix a spațiu de nume svg care este folosit la aplicarea spațiului de nume
http://www.w3.org/2000/svg
unde prefix de spațiu de nume svg este folosit.
În Spațiile de NUme CSS, ca și în Spațiile de Nume din XML 1.0, prefixul este aproape o construcție sintactică; este expanded name (tuplu de nume local și numele de spațiu de nume) care este significant. Prin urmare, prefixele folosite într-o foaie de stil CSS, fie că sunt implicite sau nu, sunt independente de prefixul de spațiu de nume folosit în marcare și fie acestea sunt imiplicite sau nu.
De exemplu, dat următorul document XML:
<qml:elem xmlns:qml="http://example.com/q-markup"></qml:elem>
și declarația următoare @namespace la începutul fișierului CSS:
@namespace Q "http://example.com/q-markup"; @namespace lq "http://example.com/q-markup";
Selectorii Q|elem și lq|elem în acel fișier CSS vor fi identici cu elementului <qml:elem>. (
Selectorul qml|elem va fi invalid.)
Sintaxa pentru regula @namespace este așa cum urmează (folosind notația de la Grammar appendix of CSS
2.1 [CSS21]):
namespace : NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S* ; namespace_prefix : IDENT ;
cu o nouă dovadă:
@{N}{A}{M}{E}{S}{P}{A}{C}{E} {return NAMESPACE_SYM;}
Orice regulă @namespace trebuie sa urmeze toate regulile @charset și @import
și să precedeze toate regulili at-rules neignorate și regula setează într-o foaie de stil.
Pentru sintaxa CSS aceasta adaugă [ namespace [S|CDO|CDC]* ]*
imediat după [ import [S|CDO|CDC]* ]* în gramatica
stylesheet .
O regulă @namespace invalidă din punct de vedere al sintaxei (fie scrisă greșit sau unde nu trebuie) trebuie să fie ignorată.
O foaie de stil CSS
care conține o regulă @namespace invalidă, nu este o foaie de stil validă
.
Un șir de caractere URI parsat din sintaxa URI trebuie să fie tratat ca un șir de caractere: la fel ca sintaxa STRING,
nici o normalizare specifică URI este aplicată.
Toate șirurile de caractere—incluzând șirul de caractere gol și șirurile de caractere care reprezintă
adrese invalide URIs—sunt nume valide de spații de nume în declarațiile @namespace
.
Prefixul spațiului de nume este declarat numai în interiorul foii de stil în care regula @namespace apare.
Nu este declarat în nici o foaie de stil care include sau este inclusă, nici în orice altă foaie de stil aplicată documentului.
Un prefix de spațiu de nume, odată declarat, reprezintă spațiul de nume pentru care a fost declarat și nu poate fi folosit în indicarea unui spațiu de nume a unui nume calificat de spațiu de nume. Prefixele de spații de nume sunt, asemenea numelor din CSS, sensibile la litere mari.
Dacă declararea în spațiul de nume a prefixului este omisă, atunci spațiul de nume este declarat ca find spațiul de nume imiplicit. Spațiul de nume implicit poate să aplice la nume care au nici un prefix de spațiu de nume aplicat: modulele care implică prefixele trebuie să definească în ce context spațiul de nume implicit se aplică. De exemplu, urmărind [XML-NAMES], în Selectori [SELECT] spațiul de nume implicit se aplică la selectorii tip—dar nu se aplică la selectorii atribute. Nu există nici o valoare imiplictă pentru spațiul de nume implicit: modulele care atribuie nume necalificate la spațiul de nume implicit trebuie să definească cum aceste nume necalificate trebuie să fie interpretate atunci când nici un spațiu de nume implicit este declarat.
Rețineți că dacă folosiți spațiul de nume implicit în conjuncție cu selectorii tip poate cauza UA-urile care suportă spații de nume implicite și UA-urile care nu suportă spațiile de nume implicite să interpreteze selectorii diferit.
Dacă un prefix a unui spațiu de nume este declarat de mai multe ori numai ultima declarare va fi folosită. Declararea unui prefix de spațiu de nume de mai multe ori nu este conformă.
Un nume calificat de CSS este un nume
localizat explicit în interiorul (asociat cu) unui spațiu de nume. Pentru a forma
un nume calificat în sintaxa CSS, un prefix de spațiu de nume care a fost declarat în scop este pre-atașat unui nume local
(cum ar fi un element sau un nume de atribut), separat de o "bară verticală" (|, U+007C).
Prefixul, reprezentând spațiul de nume pentru care a fost declarat, indică spațiul de nume a numelui local. Prefixul unui nume calificat
poate fi omis pentru a indica că numele nu are nici o valoare. Anumite contexte (definit de limbajul gazdă)
poate permite folosirea unui asterix (*, U+002A) ca un prefix special pentru a indic un nume într-un spațiu de nume,
incluzând nici un spațiu de nume.
Dat declarațiile de spațiu de nume:
@namespace toto "http://toto.example.org"; @namespace "http://example.com/foo";
Într-un context unde spațiul de nume implicit se aplică
toto|A
A în spațiul de nume
http://toto.example.org .
|B
B care nu aparține nici unui spațiu de nume.
*|C
C în orice spațiu de nume, incluzând nici un spațiu de nume.
D
D în spațiul de nume
http://example.com/foo .
Sintaxa pentru bucata de nume calificat CSS înainte de a se da numele local mai jos, amandouă numele calificate care permit prefixe speciale
(wqname) și pentru numele calificate care nu permit prefixe speciale (qname). (Sintaxa folosește notația
de la Grammar appendix of
CSS 2.1. [CSS21] Rețineți ca acest lucru înseamnă că comentarile, dar nici un spațiu alb, sunt implicit permise între dovezi.):
qname_prefix : [namespace_prefix]? '|' ; wqname_prefix : namespace_prefix? '|' | '*' '|' ;
Numele de CSS calificate pot fi folosite în (de exemplu) selectori și valorile proprietăți așa cum este descris în alte module. Acest module trebuie să definească manipularea prefixelor de spații de nume care nu au fost declarate corect. Astfel de manipulări trebuie să trateze prefixele nedeclarate a spațiilor de nume ca eroare de parsare care va cauza selectorului sau declarației (etc.) să fie considerată invalidă și, în CSS, ignorată.
Aces proiect împrumută masiv de la versiunile anterioare realizate de Chris Lilley și de Peter Linss precum și versiuni anterioare nepublicate de CSS și XML realizate de Håkon Lie și Bert Bos, și Numele de Spații XML și CSS de către Bert Bos și Steven Pemberton. Mulți actuali și foști membri a CSS Working Group au contribuit la acest document. Discuțiile pe www-style@w3.org și în alte locuri au contribuit deasemenea cu idei la această specificare. Mulțumiri speciale pentru L. David Baron, Karl Dubost, Ian Hickson, Bjöern Höhrmann, și Lachlan Hunt pentru comentarile lor.