Modu┼é Przestrzenie nazw CSS, poziom 3

> Dodaj do ulubionych

Rekomendacja W3C z dnia 29 wrze┼Ťnia 2011 r., edytowana na miejscu dnia 20 marca 2014 r.

Ta wersja:
http://www.w3.org/TR/2014/REC-css-namespaces-3-20140320/
Najnowsza wersja:
http://www.w3.org/TR/css-namespaces-3/
Szkic redaktorski:
http://dev.w3.org/csswg/css-namespaces/
Poprzednia wersja:
http://www.w3.org/TR/2011/REC-css3-namespace-20110929/
Komentarze:
Www-style@w3.org, w tytule nale┼╝y napisa─ç „[css-namespaces] ÔÇŽ temat ÔÇŽ” (archiwum)
Pakiet testowy:
http://test.csswg.org/suites/css3-namespace/20090210/
Redakcja:
Elika J. Etemad (zaproszona ekspertka)
Poprzednia redakcja:
Anne van Kesteren (Opera Software ASA)
Peter Linss (Netscape Communications)
Chris Lilley (W3C)

Sprawdź erratę, aby dowiedzieć się o błędach i problemach zgłoszonych od dnia publikacji. Zobacz także tłumaczenia.


Abstrakt

Ten modu┼é Przestrzenie nazw CSS definiuje sk┼éadni─Ö przestrzeni nazw w CSS. Zawiera definicj─Ö regu┼éy @namespace s┼éu┼╝─ůcej do deklarowania domy┼Ťlnej przestrzeni nazw oraz do wi─ůzania przestrzeni nazw z ich przedrostkami, a tak┼╝e zawiera definicj─Ö sk┼éadni, kt├│ra mo┼╝e zosta─ç przyj─Öta w innych specyfikacjach w celu u┼╝ywania tych przedrostk├│w w nazwach opatrzonych przestrzeniami nazw. CSS to j─Özyk opisu renderowania dokument├│w strukturalnych (takich jak HTML i XML) na ekranie, papierze, w mowie itd.

Status tego dokumentu

Ta sekcja opisuje status tego dokumentu w chwili jego publikacji. Inne dokumenty mog─ů go zast─ůpi─ç. List─Ö aktualnych publikacji W3C i najnowsz─ů wersj─Ö tego raportu technicznego mo┼╝na znale┼║─ç na stronie Indeks raport├│w technicznych W3C pod adresem http://www.w3.org/TR/.

Ten dokument zosta┼é stworzony przez Grup─Ö robocz─ů CSS jako Rekomendacja.

Ten dokument zosta┼é zrecenzowany przez cz┼éonk├│w W3C, tw├│rc├│w oprogramowania oraz przez inne grupy W3C i zainteresowane strony i jest przyj─Öty przez Dyrektora jako Rekomendacja W3C. Jest to stabilny dokument, kt├│ry mo┼╝e by─ç wykorzystywany jako materia┼é ┼║r├│d┼éowy i cytowany w innych dokumentach. Rol─ů W3C w tworzeniu Rekomendacji jest zwracanie uwagi na specyfikacj─Ö i zach─Öcanie do jej jak najszerszego wdro┼╝enia. Przyczynia si─Ö to do zwi─Ökszenia funkcjonalno┼Ťci i interoperacyjno┼Ťci internetu.

W3C zach─Öca wszystkich do wdro┼╝enia tej specyfikacji. Uwagi mo┼╝na wysy┼éa─ç do (archiwizowanej) publicznej listy mailingowej www-style@w3.org (zobacz instrukcje). W temacie wysy┼éanej wiadomo┼Ťci e-mail nale┼╝y wpisa─ç „css-namespaces-3”, najlepiej w nast─Öpuj─ůcej formie: „[css-namespaces-3] ÔÇŽpodsumowanie uwagiÔÇŽ

Ten dokument zosta┼é utworzony przez grup─Ö dzia┼éaj─ůc─ů na podstawie Polityki patentowej W3C z 5 lutego 2004 roku. W3C prowadzi publiczn─ů list─Ö wszystkich ujawnie┼ä dokonanych w zwi─ůzku z owocami pracy grupy. Ponadto strona ta zawiera instrukcje ujawniania patent├│w.

Szczeg├│┼éowe informacje na temat zmian w stosunku do poprzedniej wersji znajduj─ů si─Ö w sekcji Zmiany.

Spis tre┼Ťci

1 Wprowadzenie

Ta sekcja ma charakter nienormatywny.

Ten modu┼é Przestrzenie nazw CSS zawiera definicj─Ö sk┼éadni umo┼╝liwiaj─ůcej u┼╝ywanie przestrzeni nazw w CSS. Zawiera definicj─Ö regu┼éy @namespace s┼éu┼╝─ůcej do deklarowania domy┼Ťlnej przestrzeni nazw oraz do wi─ůzania przestrzeni nazw z przedrostkami przestrzeni nazw. Ponadto zawiera definicj─Ö sk┼éadni umo┼╝liwiaj─ůcej u┼╝ywanie tych przedrostk├│w do reprezentowania nazw opatrzonych przestrzeniami nazw. Nie okre┼Ťla, gdzie takie nazwy mog─ů wyst─Öpowa─ç ani co one znacz─ů – to zale┼╝y od ich kontekstu i jest okre┼Ťlone przez j─Özyk hosta, na przyk┼éad Selektory ([SELECT]), kt├│ry odnosi si─Ö do sk┼éadni zdefiniowanej w module Przestrzenie nazw CSS.

Klient CSS, kt├│ry nie obs┼éuguje tego modu┼éu (pod warunkiem, ┼╝e spe┼énia warunki parsowania kodu CSS w spos├│b zapewniaj─ůcy zgodno┼Ť─ç z przysz┼éymi normami), zignoruje wszystkie regu┼éy @namespace, jak r├│wnie┼╝ wszystkie regu┼éy stylistyczne zawieraj─ůce nazwy z kwalifikatorem przestrzeni nazw. Sk┼éadnia oddzielania przedrostk├│w przestrzeni nazw w CSS zosta┼éa celowo tak dobrana, aby ci klienci CSS ignorowali te regu┼éy stylistyczne zamiast je interpretowa─ç, potencjalnie niepoprawnie.

2 Zgodno┼Ť─ç

Dokument lub implementacja nie mog─ů by─ç zgodne tylko z Przestrzeniami nazw CSS, ale mog─ů deklarowa─ç zgodno┼Ť─ç z Przestrzeniami nazw, je┼Ťli spe┼éniaj─ů wymogi zgodno┼Ťci zawarte w tej specyfikacji, gdy implementuj─ů CSS lub inny j─Özyk hosta, kt├│ry odnosi si─Ö do niej w spos├│b normatywny.

Zgodno┼Ť─ç z Przestrzeniami nazw CSS jest zdefiniowana dla dw├│ch klas:

arkusz styl├│w
Arkusz styl├│w CSS (lub kompletna jednostka innego j─Özyka hosta, kt├│ra w spos├│b normatywny czerpie z Przestrzeni nazw CSS).
interpreter
Osoba lub urz─ůdzenie interpretuj─ůce semantyk─Ö arkusza styl├│w. (Do kategorii tej zaliczaj─ů si─Ö aplikacje klienckie u┼╝ytkownika CSS).

Wymagania w zakresie zgodno┼Ťci s─ů wyra┼╝one za pomoc─ů kombinacji opisowych asercji i terminologii RFC 2119. S┼éowa kluczowe „MUSI, „NIE MO┼╗E”, „JEST WYMAGANE", „B─śDZIE”, „NIE B─śDZIE”, „POWINIEN”, „NIE POWINIEN”, „ZALECA SI─ś”, „MO┼╗E”, i „OPCJONALNIE” w normatywnych cz─Ö┼Ťciach tego dokumentu nale┼╝y interpretowa─ç zgodnie z opisem zamieszczonym w dokumencie RFC 2119. Aby jednak tekst specyfikacji by┼é bardziej czytelny, s┼éowa te nie s─ů w nim zapisywane wielkimi literami. Ca┼éy tekst tej specyfikacji, z wyj─ůtkiem sekcji, kt├│re zosta┼éy wyra┼║nie oznaczone jako nienormatywne, przyk┼éad├│w i uwag, ma charakter normatywny. [RFC2119]

Przyk┼éady w tej specyfikacji s─ů wprowadzane za pomoc─ů s┼é├│w „na przyk┼éad” lub skr├│tu „np.” albo s─ů oddzielone od tekstu normatywnego za pomoc─ů elementu o nast─Öpuj─ůcym wygl─ůdzie:

To jest egzemplarz przykładu informacyjnego.

Uwagi informacyjne w tej specyfikacji s─ů wprowadzane za pomoc─ů s┼éowa „Uwaga” oraz s─ů oddzielone od tekstu normatywnego za pomoc─ů elementu o nast─Öpuj─ůcym wygl─ůdzie:

Uwaga, to jest uwaga informacyjna.

2.1 Terminologia

Opr├│cz poj─Ö─ç wprowadzonych w tej specyfikacji, w tym dokumencie u┼╝ywane s─ů tak┼╝e poj─Öcia zdefiniowane w specyfikacji Przestrzenie nazw w XML 1.0. [XML-NAMES] Niemniej jednak, sk┼éadnia zdefiniowana w tej specyfikacji nie ogranicza si─Ö tylko do reprezentowania nazw element├│w i atrybut├│w XML oraz mo┼╝e reprezentowa─ç inne rodzaje przestrzeni nazw zdefiniowane przez j─Özyk hosta.

W Przestrzeniach nazws CSS nazwa przestrzeni nazw b─Öd─ůca pustym ┼éa┼äcuchem jest traktowana jako reprezentacja zerowej przestrzeni nazw lub jej braku.

Na przykład, dla poniższych deklaracji przestrzeni nazw:

@namespace empty ""; @namespace "";

Selektory typu elem, |elem i empty|elem s─ů r├│wnowa┼╝ne.

3 Deklarowanie przestrzeni nazw: reguła @namespace

Regu┼éa @ @namespace deklaruje przedrostek przestrzeni nazw i wi─ů┼╝e go z dan─ů nazw─ů przestrzeni nazw (┼éa┼äcuchem). Ten przedrostek przestrzeni nazw mo┼╝e by─ç nast─Öpnie u┼╝ywany w nazwach kwalifikowanych przestrzeni─ů nazw, takich jak zdefiniowane poni┼╝ej nazwy kwalifikowane CSS.

@namespace "http://www.w3.org/1999/xhtml"; @namespace svg "http://www.w3.org/2000/svg";

Pierwsza regu┼éa deklaruje domy┼Ťln─ů przestrze┼ä nazw http://www.w3.org/1999/xhtml odnosz─ůc─ů si─Ö do nazw, kt├│re nie maj─ů wprost okre┼Ťlonego komponentu przestrzeni nazw.

Druga z tych reguł deklaruje przedrostek przestrzeni nazw svg, który umożliwia zastosowanie przestrzeni nazw http://www.w3.org/2000/svg tam, gdzie zostanie użyty przedrostek svg.

W Przestrzeniach nazw CSS, tak jak w Przestrzeniach nazw XML 1.0, przedrostek jest jedynie konstrukcj─ů sk┼éadniow─ů. Dopiero rozwini─Öta nazwa (po┼é─ůczenie nazwy lokalnej i nazwy przestrzeni nazw) ma rzeczywiste znaczenie. Dlatego rzeczywiste przedrostki u┼╝ywane w arkuszu styl├│w CSS, bez wzgl─Ödu na to, czy s─ů domy┼Ťlne, czy nie, s─ů niezale┼╝ne od przedrostk├│w przestrzeni nazw u┼╝ywanych w kodzie znacznikowym, r├│wnie┼╝ bez wzgl─Ödu na to, czy s─ů domy┼Ťlne, czy nie.

Na przyk┼éad, dane s─ů poni┼╝szy dokument XML:
<qml:elem xmlns:qml="http://example.com/q-markup"></qml:elem>

i poni┼╝sze deklaracje @namespace, umieszczone na pocz─ůtku pliku CSS:

@namespace Q "http://example.com/q-markup"; @namespace lq "http://example.com/q-markup";

Selektory Q|elem i lq|elem w tym pliku CSS pasowałyby do elementu <qml:elem>.

(Selektor qml|elem by┼éby niepoprawny, poniewa┼╝ przestrzenie nazw CSS rozpoznaj─ů tylko przedrostki zadeklarowane w CSS, a nie te, kt├│re s─ů zadeklarowane przez j─Özyk dokumentu).

3.1 Składnia

Regu┼éa @namespace ma nast─Öpuj─ůc─ů sk┼éadni─Ö (u┼╝yta notacja pochodzi z dodatku Gramatyka specyfikacji CSS 2.1 [CSS21]):

namespace : NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S* ; namespace_prefix : IDENT ;

z nowym tokenem:

@{N}{A}{M}{E}{S}{P}{A}{C}{E} {return NAMESPACE_SYM;}

Wszystkie regu┼éy @namespace musz─ů znajdowa─ç si─Ö po wszystkich regu┼éach @charset i @import oraz przed wszystkimi innymi nieignorowanymi regu┼éami @ i regu┼éami stylistycznymi w arkuszu styl├│w. Dla sk┼éadni CSS oznacza to dodanie [ namespace [S|CDO|CDC]* ]* bezpo┼Ťrednio po [ import [S|CDO|CDC]* ]* w gramatyce stylesheet.

Sk┼éadniowo niepoprawne regu┼éy @namespace (czy to ┼║le zbudowane, czy ┼║le umieszczone) musz─ů zosta─ç zignorowane. Arkusz styl├│w CSS zawieraj─ůcy niepoprawn─ů regu┼é─Ö @namespace nie jest poprawnym arkuszem styl├│w.

Łańcuch URI parsowany ze składni URI musi być traktowany jako literalny łańcuch: tak, jak w przypadku składni STRING nie jest stosowana żadna normalizacja specyficzna dla URI.

Wszystkie ┼éa┼äcuchy — w┼é─ůczaj─ůc ┼éa┼äcuch pusty i ┼éa┼äcuchy reprezentuj─ůce niepoprawne identyfikatory URI — s─ů prawid┼éowymi nazwami przestrzeni nazw w deklaracjach @namespace.

3.2 Zakres

Przedrostek przestrzeni nazw jest zadeklarowany tylko w tym arkuszu styl├│w, w kt├│rym znajduje si─Ö jego regu┼éa @namespace. Nie jest zadeklarowany w ┼╝adnym arkuszu styl├│w importuj─ůcym lub importowanym przez ten arkusz styl├│w ani w ┼╝adnym innym arkuszu styl├│w maj─ůcym zastosowanie do dokumentu.

3.3 Deklarowanie przedrostk├│w

Przedrostek przestrzeni nazw, kiedy zostanie zadeklarowany, reprezentuje przestrze┼ä nazw, dla kt├│rej zosta┼é zadeklarowany i mo┼╝e by─ç u┼╝ywany do wskazywania przestrzeni nazw nazwy kwalifikowanej przestrzeni─ů nazw. W przedrostkach przestrzeni nazw, tak jak w nazwach licznik├│w CSS, rozpoznawana jest wielko┼Ť─ç liter.

Je┼Ťli w deklaracji przestrzeni nazw zostanie pomini─Öty przedrostek przestrzeni nazw, to tak zadeklarowana przestrze┼ä nazw jest domy┼Ťln─ů przestrzeni─ů nazw. Domy┼Ťlna przestrze┼ä nazw mo┼╝e odnosi─ç si─Ö do nazw, kt├│re nie maj─ů bezpo┼Ťrednio przedrostka przestrzeni nazw: modu┼éy u┼╝ywaj─ůce przedrostk├│w przestrzeni nazw musz─ů okre┼Ťla─ç, w jakich kontekstach ma zastosowanie domy┼Ťlna przestrze┼ä nazw. Na przyk┼éad, za [XML-NAMES], W Selektorach [SELECT] domy┼Ťlna przestrze┼ä nazw odnosi si─Ö do selektor├│w typu — ale nie odnosi si─Ö do selektor├│w atrybutu. Nie ma domy┼Ťlnej warto┼Ťci dla domy┼Ťlnej przestrzeni nazw: modu┼éy, kt├│re przypisuj─ů niekwalifikowane nazwy do domy┼Ťlnej przestrzeni nazw musz─ů definiowa─ç, jak te niekwalifikowane nazwy powinny by─ç interpretowane, gdy nie jest zadeklarowana ┼╝adna domy┼Ťlna przestrze┼ä nazw.

Uwaga: u┼╝ycie domy┼Ťlnych przestrzeni nazw z selektorami typu mo┼╝e spowodowa─ç, ┼╝e aplikacje klienckie, kt├│re je obs┼éuguj─ů i aplikacje klienckie, kt├│re ich nie obs┼éuguj─ů, b─Öd─ů r├│┼╝nie interpretowa─ç te selektory.

Je┼Ťli przedrostek przestrzeni nazw lub domy┼Ťlna przestrze┼ä nazw s─ů zadeklarowane wi─Öcej ni┼╝ raz, w u┼╝yciu jest tylko ostatnia deklaracja. Deklaracja przedrostka przestrzeni nazw lub domy┼Ťlnej przestrzeni nazw wi─Öcej ni┼╝ raz jest dzia┼éaniem niezgodnym z zasadami.

4 Nazwy kwalifikowane CSS

Nazwa kwalifikowana CSS to nazwa bezpo┼Ťrednio ulokowana w przestrzeni nazw (z ni─ů powi─ůzana). Aby utworzy─ç nazw─Ö kwalifikowan─ů w sk┼éadni CSS, przedrostek przestrzeni nazw, kt├│ry zosta┼é zadeklarowany w obr─Öbie zakresu, dodaje si─Ö przed nazw─ů lokaln─ů (tak─ů jak nazwa elementu lub atrybutu) i oddziela od niej znakiem „pionowej kreski” (|, U+007C). Przedrostek, kt├│ry reprezentuj przestrze┼ä nazw, dla kt├│rej zosta┼é zadeklarowany, wskazuje przestrze┼ä nazw lokalnej nazwy. Przedrostek nazwy kwalifikowanej mo┼╝e zosta─ç opuszczony na znak, ┼╝e dana nazwa nie nale┼╝y do ┼╝adnej przestrzeni nazw, tzn. ┼╝e cz─Ö┼Ť─ç reprezentuj─ůca przestrze┼ä nazw rozwini─Ötej nazwy nie ma warto┼Ťci. Niekt├│re konteksty (zgodnie z definicj─ů w j─Özyku hosta) mog─ů pozwala─ç na u┼╝ywanie znaku gwiazdki (*, U+002A) jako przedrostka wieloznacznego oznaczaj─ůcego nazw─Ö w dowolnej przestrzeni nazw, w┼é─ůcznie z jej brakiem.

Dla poni┼╝szych deklaracji przestrzeni nazw:

@namespace toto "http://toto.example.org"; @namespace "http://example.com/foo";

W kontek┼Ťcie, w kt├│rym ma zastosowanie domy┼Ťlna przestrze┼ä nazw

toto|A
reprezentuje nazw─Ö A z przestrzeni nazw http://toto.example.org.
|B
reprezentuje nazw─Ö B, kt├│ra nie nale┼╝y do ┼╝adnej przestrzeni nazw.
*|C
reprezentuje nazw─Ö C w jakiejkolwiek przestrzeni nazw, tak┼╝e nie nale┼╝─ůc─ů do ┼╝adnej przestrzeni nazw.
D
reprezentuje nazw─Ö D z przestrzeni nazw http://example.com/foo.

Poni┼╝ej znajduje si─Ö sk┼éadnia tej cz─Ö┼Ťci kwalifikowanej nazwy CSS, kt├│ra znajduje si─Ö przed nazw─ů lokaln─ů. Jest ona przeznaczona zar├│wno dla nazw kwalifikowanych dopuszczaj─ůcych przedrostki wieloznaczne (wqname), jak i dla nazw kwalifikowanych, kt├│re ich nie dopuszczaj─ů (qname). (Sk┼éadnia ta wykorzystuje notacj─Ö zaczerpni─Öt─ů z dodatku Gramatyka specyfikacji CSS 2.1. [CSS21]. Uwaga: to znaczy, ┼╝e mi─Ödzy tokenami dopuszczalne s─ů komentarze, ale nie bia┼ée znaki).

qname_prefix : namespace_prefix? '|' ; wqname_prefix : [ namespace_prefix? | '*' ] '|' ; qname : qname_prefix? ident ; wqname : wqname_prefix? ident ; wqwname : wqname_prefix? [ ident | '*' ] ;

Nazw kwalifikowanych CSS mo┼╝na u┼╝ywa─ç na przyk┼éad w selektorach i warto┼Ťciach w┼éasno┼Ťci zgodnie z opisem w innych modu┼éach. Modu┼éy te musz─ů definiowa─ç spos├│b post─Öpowania z przedrostkami przestrzeni nazw, kt├│re nie zosta┼éy niepoprawnie zadeklarowane. Niezadeklarowane przedrostki przestrzeni nazw powinny by─ç traktowane jako b┼é─ůd parsowania, kt├│ry powoduje, ┼╝e selektor lub deklaracja (itd.) zostaj─ů uznane za niepoprawne i, w CSS, zignorowane.

Na przyk┼éad, w module Selektory [SELECT] selektor typu z niezadeklarowanym przedrostkiem przestrzeni nazw jest uznawany za niepoprawny, a CSS [CSS21] wymaga, aby regu┼éy stylistyczne zawieraj─ůce niepoprawny selektor by┼éy ignorowane.

Zmiany

Zmiany wprowadzone od Rekomendacji z 29 wrze┼Ťnia 2011 roku:

  • Dodano predefiniowane produkcje qname, wqname i wqwname, aby u┼éatwi─ç u┼╝ywanie ich w innych specyfikacjach.

Podzi─Ökowania

Ten szkic czerpie w du┼╝ym stopniu z wcze┼Ťniejszych szkic├│w na temat obs┼éugi przestrzeni nazw CSS autorstwa Chrisa Lilleya i Petera Linssa oraz wst─Öpnych (nieopublikowanych) szkic├│w na temat CSS i XML autorstwa Håkona Lie i Berta Bosa, a tak┼╝e na temat Przestrzeni nazw XML oraz CSS autorstwa Berta Bosa i Stevena Pembertona. Wk┼éad w powstanie tego dokumentu mia┼éo wiele obecnych i by┼éych cz┼éonk├│w Grupy roboczej ds. CSS. W specyfikacji tej wykorzystano tak┼╝e pomys┼éy przedstawione w dyskusjach na www-style@w3.org i w innych miejscach. Specjalne podzi─Ökowania za uwagi nale┼╝─ů si─Ö nast─Öpuj─ůcym osobom: L. David Baron, Karl Dubost, Ian Hickson, Björn Höhrmann oraz Lachlan Hunt.

Źródła

Źródła normatywne

Źródła informacyjne

[SELECT]
Tantek Çelik; et al. Selectors Level 3. 29 wrze┼Ťnia 2011 r. Rekomendacja W3C. URL: http://www.w3.org/TR/2011/REC-css3-selectors-20110929/

Indeks

  • nazwa kwalifikowana CSS, 4
  • domy┼Ťlna przestrze┼ä nazw, 3.3
  • nazwa rozwini─Öta, 3
  • interpreter, 2
  • przedrostek przestrzeni nazw, 3.3
  • arkusz styl├│w, 2

Indeks w┼éasno┼Ťci

┼╗adne w┼éasno┼Ťci nie zosta┼éy zdefiniowane.

Tłumaczenie: Łukasz Piwko