Цей документ є неофіційним перекладом початкової англійської версії CSS Namespaces Module. Зверніть увагу на те, що оригінальна версія документа існує тільки на англійській мові. Цей переклад може містити неточності та помилки. Переклад виконав © Зайцев Дмитро, 2011. За підтримкою сайту air compressor. Коментарі до перекладу залишайте тут! | | На головну
Будь ласка, зверніться до сторінки виправлень цього документу, яка може включати до себе нормативні зміни.
Див. також переклади.
Copyright © 2011 W3C® (MIT, ERCIM, Keio), Усі права захищені. W3C дотримується правил відповідальності, торгівельної марки та використання документів.
Цей модуль простору імен CSS визначає синтаксис для використання просторів імен у
CSS. Він визначає правила @namespace
для оголошення простору імен за замовчуванням та зв'язування просторів імен з їх префіксами, а також, він визначає синтаксис, який інші специфікації можуть переймати для використання цих префіксів у повних іменах простору імен.
Цей розділ описує статус даного документу на час його публікації. Інші документи можуть заміняти цей документ. Зі списком поточних публікацій W3C та останньої ревізії цього технічного докладу можна ознайомитись у індексі технічних докладів W3C, http://www.w3.org/TR/.
Цей документ було підготовлено Робочою Групою CSS у якості Пропонованої Рекомендації.
Рекомендація W3C, це готовий документ, який було широко розглянутий, та який вказує на те, що він вже реалізований. W3C рекомендує, щоб всі реалізовували цю специфікацію. Коментарі можуть бути відправлені у (архів) публічний список електронних листів [email protected] (див. інструкції). При відправленні електронного листа, будь ласка, додайте текст “css3-namespace” до теми листа, бажано таким чином: “[css3-namespace] …стислий опис коментарю…”
Цей документ був розглянутий членами W3C, розробниками програмного забезпечення, а також іншими групами W3C і зацікавленими сторонами, і схвалений Директором в якості Рекомендації W3C. Це стабільний документ і може бути використаний в якості довідкового матеріалу або цитат в іншому документі. Роль W3C у розробці Рекомендації, полягає в залученні уваги до специфікації, і сприяти її широкому поширенню. Це підвищує функціональність і сумісність у Веб (Web).
Цей документ був підготовлений групою, яка діє в рамках Патентної Політики W3C від 5 лютого 2004 року. W3C підтримує публічний список відкритих патентів, який було зроблено у зв'язку з результатами діяльності групи; ця сторінка також містить у собі інструкції з розкриття патенту. Особи, які мають актуальною інформацією про патент, та який задовольняє Основним вимогам повинні розкрити цю інформацію згідно з пунктом 6 патентної політики 6 W3C.
Пакет тестування Простору імен CSS був розроблений на стадії попередньої рекомендації ("Candidate Recommendation") цієї специфікації простору імен CSS. Також можна переглянути Звіт щодо реалізації.
Цей документ, такий самий, що й попередня запропонована версія рекомендації, за винятком деяких редакційних змін до вступної частини та оновлення посилань на джерела.
@namespace
Цей розділ не є нормативним.
Цей модуль простору імен CSS визначає синтаксис для використання просторів імен у CSS.
Він визначає правило @namespace
для оголошення простору імен за замовчуванням, та для зв'язування просторів імен з їх префіксами. Він також визначає синтаксис для використання цих префіксів, щоб надати повні імена просторів імен.
Він не визначає, де такі імена дійсні, або, що вони означають: що залежить від їх контексту та визначається базовою мовою, такою як Селектори ([SELECT]), яка посилається на синтаксис, визначений у модулі просторів імен CSS.
Зверніть увагу, що клієнт CSS, який не підтримує цей модуль, буде (якщо він належним чином відповідає до CSS's
forward-compatible parsing rules) ігнорувати усі правила @namespace
,
а також усі правила стилів, які використовують повні імена просторів імен.
Синтаксис розмежованих префіксів простору імен у CSS, було навмисно обрано таким чином, щоб
ці клієнти CSS скоріш ігнорували правила стилів, ніж зіставляли їх некоректно.
Документ або відповідність не можуть відповідати простору імен CSS по одинці, але можуть претендувати на відповідність до Просторів імен CSS, якщо він задовольняє вимогам відповідності у цій специфікації при впровадженні CSS або іншої базової мови, яка нормативно посилається до цієї специфікації.
Відповідність просторів імен CSS визначено у двох класах:
Відповідність до вимог виражені у поєднанні описових тверджень та термінології документа RFC 2119. Ключові слова ПОВИНЕН ("MUST"), НЕ ПОВИНЕН ("MUST NOT"), НЕОБХІДНИЙ ("REQUIRED"), МУСИТЬ ("SHALL"), НЕ МУСИТЬ ("SHALL NOT"), СЛІД ("SHOULD"), НЕ СЛІД ("SHOULD NOT"), РЕКОМЕНДУЄТЬСЯ ("RECOMMENDED"), МОЖЕ ("MAY"), ТА НЕОБОВ'ЯЗКОВО ("OPTIONAL") у нормативних частинах цього документу повинні бути інтерпретовані так, як це змальовано у документі RFC 2119. Тем не менш, для зручності читання, у даній специфікації ці слова не з'являються у верхньому регістрі. Весь текст даної специфікації є нормативним, за виключенням тих розділів які явно позначені як ненормативні, приклади або примітки.[RFC2119]
Приклади у цій специфікації починаються зі слова "наприклад" або відокремлені від нормативного тексту та виділені класом -
class="example"
, як наведено нижче:
Це інформативний приклад.
Інформативні примітки починаються зі слова "Примітка" та встановлюються окремо від нормативного тексту з класом
class="note"
, як наведено нижче:
Примітка, це інформативна примітка.
Кажучи про терміни, які представлені у цій специфікації, то Простори імен CSS використовують термінологію визначену у Просторі імен XML 1.0. [XML-NAMES] Однак, синтаксис який визначено тут, не обмежується поданням імен елементів та атрибутів XML і може представляти інші види просторів імен, як це визначено базовою мовою.
У Просторах імен CSS, ім'я простору імен, яке містить порожню строку, прийнято представляти як, нульовий простір імен або відсутність простору імен.
Наприклад, з урахуванням оголошення простору імен:
@namespace empty ""; @namespace "";
Типи
селекторів elem
, |elem
, та
empty|elem
еквівалентні.
@namespace
По-правило @namespace
, оголошує префікс простору
імен та пов'язує його з заданим ім'ям простору імен (рядок). Цей префікс простору імен
може бути використаний у повних іменах просторів імен, у якості повних імен CSS, які визначені нижче.
@namespace "http://www.w3.org/1999/xhtml"; @namespace svg "http://www.w3.org/2000/svg";
Перше правило оголошує простір імен за замовчуванням
http://www.w3.org/1999/xhtml
, який повинен застосовуватися до імен, які мають конкретного компоненту простору імен.
Друге правило, оголошує префікс простору імен svg
, який використовується для вживання простору імен http://www.w3.org/2000/svg
, у якому цей префікс використовується.
У Просторах імен CSS, як і в Просторах імен у XML 1.0, префікс є всього лише синтаксичною конструкцією; це повне ім'я (складається з локальної назви та назви простору імен) яке є дуже значимим. Таким чином, діючі префікси використовуються у таблиці стилів CSS, та в залежності від префіксів простору імен, що використовуються у розмітці, вони являються або за замовчуванням або ні.
Наприклад, з урахуванням наступного документу XML:
<qml:elem xmlns:qml="http://example.com/q-markup"></qml:elem>
та таких оголошень @namespace
на початку файлу CSS:
@namespace Q "http://example.com/q-markup"; @namespace lq "http://example.com/q-markup";
Селектори Q|elem
та lq|elem
у цьому CSS файлі,
обидва будуть відповідати елементу <qml:elem>
. (Селектор
qml|elem
буде некоректним.)
Синтаксис для правила @namespace
, виглядає наступним чином (використовуючи
позначення з Додатку Граматика у CSS
2.1 [CSS21]):
namespace : NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S* ; namespace_prefix : IDENT ;
з новою лексемою:
@{N}{A}{M}{E}{S}{P}{A}{C}{E} {return NAMESPACE_SYM;}
Будь-які правила @namespace
повинні слідувати усім правилам @charset та @import
і передувати усім іншим не проігнорованим по-правилам(at-rules) та наборам правил у таблиці стилів.
Для синтаксису CSS добавляють [ namespace [S|CDO|CDC]* ]*
одразу після [ import [S|CDO|CDC]* ]*
у граматиці
stylesheet
.
Синтаксично некоректне правило @namespace
(або погано сформоване, або
невірно розміщене) повинно бути проігноровано.
Таблиця
стилів CSS, яка містить у собі недійсне правило @namespace
, не є коректною
таблицею стилів.
Рядок URI, який отримано з синтаксису URI
, повинен бути розглянутий, як символьний рядок:
як і з синтаксисом STRING
, ніяких специфічних нормалізацій URI не застосовується.
Усі строки,—включаючи порожню строку та строки, які представляють недійсні URI,—є дійсними іменами просторів імен у оголошеннях @namespace
.
Префікс простору імен оголошується тільки з таблицею стилів у якій це правило
@namespace
з'являється. Він не оголошується ні в будь-яких таблицях стилів імпортованих або, які імпортуються цією таблицею стилів, ні в будь-яких інших таблицях стилів, які застосовуються до документу.
Одного разу оголошений префікс простору імен, представляє простір імен для якого він був оголошений та може бути використаний для позначення простору імен повної назви. Також як і лічильник імен CSS, префікси простору імен чутливі до регістру.
Якщо в оголошенні простору імен опущений префікс, тоді оголошений простір імен є простором імен за замовчуванням. Простір імен за замовчуванням може застосовуватися до імен які не мають явного префіксу простору імен: модулі, які використовують префікси простору імен повинні визначити у якому контексті застосовується простір імен за замовчуванням. Наприклад, наступний [XML-NAMES], у Селекторах [SELECT] простір імен за замовчуванням застосовується до типів селекторів—але воно не застосовується до атрибутів селекторів. Для простору імен за замовчуванням, не існує значення за замовчуванням: модулі, які присвоюють неповні імена простору імен за замовчуванням, повинні визначатися як їх неповні імена, та повинні бути інтерпретовані, коли простір імен за замовчуванням не оголошено.
Відзначте, що використання просторів імен за замовчуванням в поєднанні з типами селекторів, може призвести до користувацьких агентів (далі КА, з англ. user agents, скор. - UA), які підтримують простори імен за замовчуванням та КА, які не підтримують простори імен за замовчуванням для різної інтерпретації селекторів.
Якщо префікс простору імен або простір імен за замовчуванням оголошено більш ніж один раз, в такому випадку буде використовуватися тільки останнє оголошення. Оголошення префіксу простору імен або простору імен за замовчуванням більше одного разу є неузгодженим.
Повна назва CSS - це назва, яка явно розташоване в межах простору імен, або пов'язана з ним.
Для формування повної назви у синтаксисі CSS, префікс простору імен, який було оголошено у його області дії, додається до локальної назви (наприклад, ім'я атрибуту або елементу), та розділяється "вертикальною рискою" (|
, U+007C).
Префікс, що представляє простір імен для якого він був оголошений, вказує на простір імен локальної назви.
Префікс повної назви, може бути не вказаний, щоб вказати, що назва не належить жодному простору імен, тобто, що частина повної назви простору імен не має значення. Деякі контексти (як це визначено у базовій мові), можуть дозволяти використання зірочки (*
, U+002A) у якості шаблону префікса, щоб вказати назву у будь-якому просторі імен, зокрема і поза простору імен.
З урахуванням таких оголошень просторів імен:
@namespace toto "http://toto.example.org"; @namespace "http://example.com/foo";
Та за умови, коли застосовується простір імен за замовчуванням
toto|A
A
в просторі імен
http://toto.example.org
.
|B
B
, яке не належить жодному з просторів імен.
*|C
C
в будь-якому просторі імен, у тому числі і поза простором імен.
D
D
в просторі імен
http://example.com/foo
.
Синтаксис для частини повної назви CSS, перш ніж наводиться нижче локальне ім'я, призначений як для повних назв, які дозволяють використовувати шаблони префіксів (wqname
), так і для повних назв, які забороняють використання шаблонів префіксів (qname
). (Синтаксис використовує позначення з Граматичного додатку CSS 2.1. [CSS21] Зверніть увагу, це означає, що непрямим чином допускаються коментарі між лексемами, але не допускається порожній простір(пробіли) між ними.):
qname_prefix : [namespace_prefix]? '|' ; wqname_prefix : namespace_prefix? '|' | '*' '|' ;
Повні назви CSS можуть бути використані, наприклад, в селекторах і у властивостях значень, як описано в інших модулях. Ці модулі повинні визначати обробку префіксів простору імен, які не були оголошені належним чином. Така обробка повинна розглядати неоголошені префікси просторів імен, як помилку розбору, яка призводить до того, що селектор або оголошення (та інші), повинні бути визнані недійсними і в CSS, проігноровані.
Цей проект, більшою мірою, був запозичений з попередніх проектів, таких як, простір імен CSS за підтримки Кріса Ліллея(Chris Lilley) і Пітера Лінсса (Peter Linss), та неопублікованих проектів по CSS та XML, від авторів Хокон Лі (Håkon Lie) і Берт Бос (Bert Bos), а також Просторів імен XML і CSS від авторів Берт Бос (Bert Bos) та Стівен Пембертон (Steven Pemberton). У цей документ внесли свій внесок багато нинішніх та колишніх членів Робочої групи CSS (CSS Working Group). Також сприяли ідеям для цієї специфікації обговорення на [email protected] та в інших місцях. Особлива подяка висловлюється Л. Девіду Барону (L. David Baron), Карлу Дабосту (Karl Dubost), Яну Хіксону (Ian Hickson), Бйорну Херманну (Bjöern Höhrmann), тв Лаклану Ханту за їхні зауваження.