Цей документ документ є не офіційним перекладом початкової англійської версії Namespaces in XML 1.0 (Third Edition). Зверніть увагу на те, що оригінальна версія документа існує тільки англійською мовою. Даний переклад може містити неточності та помилки. © Зайцев Дмитро, 2011. За підтримкою сайту arc lamp. Коментарі до перекладу залишайте тут | | На головну
Будь ласка, зверніться до сторінки виправлень для цього документа, який може включати до себе нормативні зміни.
Див. також переклади.
Цей документ, також доступний в таких ненормативних форматах як: XML та HTML із зазначеними відмінностями від другого видання.
Copyright © 2009 W3C® (MIT, ERCIM, Keio), Всі права захищені. W3C дотримується правил відповідальності, торгівельної марки та використання документів.
Простори імен XML забезпечують просту методику для отримання імен елементів і атрибутів, які використовуються у документах Розширюваної Мови Розмітки, асоціюючи їх з просторами імен, які визначені URI посиланнями.
Цей розділ описує статус даного документу на момент його публікації. Інші документи можуть заміняти цей документ. Зі списком поточних публікацій W3C та останньою ревізією цієї технічної доповіді можна ознайомитися в індексі технічних доповідей W3C на http://www.w3.org/TR/.
Цей документ є продуктом Рабочою Групою XML Core як частина W3C XML Activity. Англійська версія цієї специфікації являє собою єдину нормативну версію. Тим не менш, переклади даного документу див. http://www.w3.org/2003/03/Translations/byTechnology?technology=xml-names .
Відомі реалізації описані в доповіді про реалізації Простору імен 1.1 (усі відомі реалізації Простору імен 1.1 також підтримують Простори імен 1.0) . Також доступні набори тестів на сторінці XML Test Suite.
Це третє видання включає у себе усі відомі виправлення станом на дату публікації. Воно заміняє попереднє видання від 16 серпня 2006 року.
Це видання було широко розглянено. Лише незначні редакційні зміни було зроблено після 6 серпня 2009 року Запропонованої Редакційної Рекомендації.
Будь ласка, повідомте про помилки в даному документі до [email protected]; доступні публічні архіви. Ознайомитись зі списком виправлень для цього документу можна за адресою http://www.w3.org/XML/2009/xml-names-errata .
Цей документ було розглянуто членами W3C, розробниками програмного забезпечення, а також іншими групами W3C та зацікавленими сторонами, та схвалений Директором у якості Рекомендації W3C. Це стабільний документ і може бути використаний у якості довідкового матеріалу або цитат в іншому документі. Роль W3C у розробці Рекомендації, полягає в залученні уваги до специфікації та сприяти її широкому поширенню. Це підвищує функціональність та сумісність у Веб(Web).
W3C підтримує публічний список відкритих патентів зроблений у зв'язку з результатами діяльності групи; ця сторінка також включає в себе інструкції з розкриття патенту. Особи, що володіють актуальною інформацією про патент, який задовольняє основним вимогам повинні розкрити цю інформацію згідно до пункту 6, патентної політики W3C.
1 Мотивація та Резюме
1.1 Примітка про Позначення та Використання
2 Простори імен XML
2.1 Основні поняття
2.2 Використання URI, в якості назви простору імен
2.3 Порівняння характеристик URI
3 Декларування Просторів імен
4 Повні імена
5 Використання повних імен
6 Застосування просторів імен для елементів та атрибутів
6.1 Область дії Просторів імен
6.2 Простори імен за замовчуванням
6.3 Унікальність атрибутів
7 Відповідність документів
8 Відповідність процесорів
A Нормативні Посилання
B Інші Посилання (Ненормативні)
C Внутрішня структура простору імен XML (Ненормативне)
D Зміни в порівнянні з версією 1.0 (Ненормативне)
E Подяки (Ненормативне)
F Особливості, які більше не використовуються (Ненормативне)
Ми припускаємо, що застосування розширюваної мови розмітки (XML), де один документ XML може містити елементи й атрибути (так званий "словник розмітки"), які визначені і використовуються декількома програмними модулями. Причина виникнення для цього є модульність: якщо такий словник розмітки існує, який в свою чергу добре розуміє і для якого є корисне програмне забезпечення, в такому разі, цю розмітку краще використовувати повторно, ніж її винаходити для нової обробки.
Такі документи, які містять декілька словників розмітки, створюють проблеми розпізнавання і колізії. Програмні модулі повинні бути в змозі розпізнавати елементи та атрибути, які призначені для обробки, навіть в умовах "колізій", що виникають при використанні того ж імені або атрибуту розміткою, яка призначена для іншого програмного пакета.
Ці міркування накладають вимоги, щоб конструкції документа мали імена побудовані таким чином, щоб уникнути зіткнень між іменами з різних словників розмітки. У даній специфікації описується механізм простору імен XML, який вирішує це завдання шляхом призначення розширених імен до елементів та атрибутів.
У тих місцях, де зустрічаються ВИДІЛЕНІ, ключові слова ПОВИНЕН, НЕ ПОВИНЕН, НЕОБХІДНО, СЛІД, НЕ СЛІД, МОЖЕ у цьому документі повинні тлумачитися, як описано в [Ключові слова].
Зверніть увагу, що багато нетермінальних конструкцій в даній специфікації визначаються не тут, а в специфікації XML [XML]. Коли нетермінальні конструкції, визначені тут, мають такі ж імена, як нетермінали визначені в специфікації XML, тоді сценарії, використані тут, у всіх випадках будуть підмножиною рядків, які відповідають сценарію там.
У сценаріях цього документа абревіатура
NSC
означає "Обмеження простору імен" ("Namespace Constraint"), є
одним з правил, якому ПОВИННІ слідувати документи відповідні до цієї специфікації.
[Визначення: Простір імен XML ідентифікується посиланням URI [RFC3986]; імена елементів та атрибутів можуть бути розміщені у просторі імен XML за допомогою механізмів, описаних в цій специфікації.]
[Визначення: Розширене ім'я це пара, яка складається з назви простору імен та локального ім'я. ] [Визначення: Для імені N в просторі імен визначеному за допомогою URI I, ім'ям простору імен буде I. Для імені N яка не перебуває у просторі імен, ім'я простору імен буде не мати значення. ] [Визначення: У кожному з випадків локальним ім'ям буде N. ] Саме це поєднання з універсально керованого простору імен URI з локальними іменами лексики, є ефективним у запобіганні конфліктів імен.
Посилання URI можуть містити символи не допустимі в іменах, і дуже часто занадто довгі, тому розширені імена не використовуються безпосередньо для назви елементів та атрибутів в документах XML. Замість цього використовуються повні імена. [Визначення: Повне ім'я це ім'я суб'єкта для інтерпретації у просторі імен. ] У документах, що відповідають цій специфікації, імена елементів та атрибутів відображаються як повні імена. Синтаксично, вони або префіксні імена або безпрефіксні імена. Синтаксис оголошення, який заснований на атрибутах, забезпечує зв'язок між префіксами та іменами простору імен, а також зв'язок із простором імен за замовчуванням, що застосовується до безпрефіксних імен елементів; ці оголошення знаходяться в області видимості елементами, на яких вони з'являються, так що різні прив'язки можуть застосовуватися в різних частинах документа. Процесори, які відповідають поточній специфікації ПОВИННІ визнати і діяти на підставі цих оголошень і префіксів.
Порожній рядок не може бути використаний у якості назви простору імен, хоча це й законне посилання URI.
Використання відносних посилань URI, включаючи посилання того ж документа, в оголошеннях просторів імен, є застарілим.
Примітка:
Це несхвалення відносних посилань URI було прийнято на Пленарному голосуванні W3C XML [несхвалення відносних посилань URI]. У ньому також заявлено, що "наступні характеристики, такі як DOM, XPath, та інші будуть визначати без розшифрування до них".
Посилання URI, які ідентифікують простори імен, порівнюються, при визначенні ім'я на належність до даного простору імен, і чи відносяться два імені до одного простору імен. [Визначення: Два посилання URI розглядаються як рядки, і вважаються ідентичними тільки в тому випадку, якщо ці рядки ідентичні, тобто, вони мають однакову послідовність символів. ] Порівняння відбувається з урахуванням регістру символів, та без виконаного або виконаного %-маскування.
Наслідком цього є те, що посилання URI , які не є ідентичними в цьому сенсі, можуть бути віднесені до одного і того ж ресурсу. Приклади включають в себе посилання URI, які відрізняються тільки регістром, %-маскуванням або коли посилання існують в зовнішніх об'єктах та які мають різні базові URI (але майте на увазі, що відносні URI є застарілими, як імена простору імен).
У оголошенні простору імен, посилання URI є нормалізованим значенням атрибуту, тому заміна символу XML та посилань на об'єкти були вже виконані, перед всіма порівняннями.
Приклади:
Посилання URI, які наведені нижче, усі різні для ідентифікації просторів імен, оскільки вони відрізняються регістром:
http://www.example.org/wine
http://www.Example.org/wine
http://www.example.org/Wine
Наступні посилання URI, також усі відрізняються для ідентифікації просторів імен:
http://www.example.org/~wilbur
http://www.example.org/%7ewilbur
http://www.example.org/%7Ewilbur
Через ризик плутанини між URI, які можуть бути еквівалентними після разіменування, використання %-екранованих символів у іменах простору імен, настійливо не рекомендується.
[Визначення: Простір імен (або точніше, обов'язковий простір імен) оголошується за допомогою сімейства зарезервованих атрибутів. Таке ім'я атрибуту повинно бути або xmlns або починатись з xmlns:. Ці атрибути, як будь-які інші атрибути XML, можуть бути представлені безпосередньо або за замовчуванням. ]
[1] | NSAttName | ::= | PrefixedAttName | |
| DefaultAttName | ||||
[2] | PrefixedAttName | ::= | 'xmlns:' NCName | [NSC: Зарезервовані префікси та імена простору імен] |
[3] | DefaultAttName | ::= | 'xmlns' | |
[4] | NCName | ::= | Name - (Char* ':' Char*) | /* XML Ім'я, за вирахуванням ":" */ |
Нормалізоване значення атрибуту ПОВИННО бути або посиланням URI — ім'я простору імен яке визначає простір імен — або пустим рядком. Для того щоб ім'я простору імен, слугувало за прямим своїм призначенням, йому СЛІД мати характеристики унікальності та постійності. Це не основна мета, яка буде безпосередньо використовуватися для пошуку схеми (якщо, така схема існує). Uniform Resource Names [RFC2141] це приклад синтаксису, який було розроблено для розуміння вказаних цілей. Однак, слід зазначити що, щоб досягти аналогічних цілей, можна керувати таким самим чином звичайними URL.
[Визначення: Якщо ім'я атрибуту відповідає PrefixedAttName, тоді NCName дає префікс простору імен, який використовується для зв'язування імен елементів та атрибутів, з вказаним в значенні атрибуту ім'ям простору імен в межах елементу, де це оголошення було подано. ]
[Визначення: Якщо ім'я атрибуту відповідає DefaultAttName, тоді ім'я простору імен у значенні атрибуту в області бачення елементу, де це оголошення було подано, стає простором імен за замовчуванням.] Простори імен за замовчуванням та перевизначення оголошень обговорюються у 6 Застосування простору імен до елементів та атрибутів.
Приклад оголошення простору імен, який пов'язує
edi (префікс простору імен) із ім'ям простору імен
http://ecommerce.example.org/schema
:
<x xmlns:edi='http://ecommerce.example.org/schema'> <!-- префікс "edi" пов'язан з http://ecommerce.example.org/schema для елемента "x" та його вмісту --> </x>
Обмеження для простору імен: Захищені префікси і назви просторів імен
Префікс xml за визначенням, пов'язаний з ім'ям простору імен
http://www.w3.org/XML/1998/namespace
. Він
МОЖЕ,
але не обов'язково, бути оголошений та
НЕ ПОВИНЕН
бути пов'язаним із
будь-яким іншим ім'ям простору імен. Інші префікси
НЕ ПОВИННІ
бути пов'язаними з цим ім'ям простору імен, та він
НЕ ПОВИНЕН
бути оголошеним, як простір імен за замовченням.
Префікс xmlns використовується тільки для оголошення зв'язку з простором імен, та за визначенням, пов'язаний з ім'ям простору імен
http://www.w3.org/2000/xmlns/
. Він
НЕ ПОВИНЕН
бути оголошеним.
Інші префікси
НЕ ПОВИННІ
бути пов'язаними з цим ім'ям простору імен, та він
НЕ ПОВИНЕН
бути оголошеним, як простір імен за замовченням.
Імена елементів
НЕ ПОВИННІ
мати префікс
xmlns
.
Усі інші префікси, що починаються з послідовності трьох літер x, m, l, в будь-яких комбінаціях регістру, зарезервовано. Це означає, що:
користувачам НЕ СЛІД використовувати їх, за винятком, випадків визначених у подальших специфікаціях
процесори НЕ ПОВИННІ розглядати їх як фатальні помилки.
Хоча самі вони не зарезервовані, недоцільно використовувати імена префіксів, LocalPart яких починається з літер x, m, l, у будь-яких комбінаціях регістру, оскільки ці імена будуть зарезервовані, якщо використовувати їх без префікса.
У документах XML, які відповідають даній специфікації, деякі імена (конструкції, які відповідають нетермінальному Name) ПОВИННІ бути передані як повні імена, визначаються наступним чином:
[7] | QName | ::= | PrefixedName |
| UnprefixedName | |||
[8] | PrefixedName | ::= |
Prefix ':' LocalPart
|
[9] | UnprefixedName | ::= |
LocalPart
|
[10] | Prefix | ::= | NCName |
[11] | LocalPart | ::= | NCName |
The Prefix визначає з частини повного ім'я префікс простору імен, і ПОВИНЕН бути пов'язаний з посиланням URI простору імен зазначеної в оголошенні простору імен. [Визначення: LocalPart визначає локальну частину повного ім'я.]
Відзначте, що префікс використовується тільки в якості заповнювача для імені простору імен. Програмам СЛІД використовувати ім'я простору імен, а не префікс, при побудові імен, область дії яких виходить за межі первісного документа.
У документах XML, які відповідають даній специфікації, імена елементів вказані як повні імена, а саме:
[12] | STag | ::= | '<' QName
(S
Attribute)*
S? '>'
| [NSC: Декларований Префікс] |
[13] | ETag | ::= | '</' QName
S? '>' | [NSC: Декларований Префікс] |
[14] | EmptyElemTag | ::= | '<' QName
(S
Attribute)*
S? '/>' | [NSC: Декларований Префікс] |
Приклад використання повного ім'я, що виступає в якості імені елементу:
<!-- Простір імен елементу 'price' є http://ecommerce.example.org/schema --> <edi:price xmlns:edi='http://ecommerce.example.org/schema' units='Euro'>32.18</edi:price>
Атрибути або оголошують простір імен, або їх імена зазначені, як повні імена:
[15] | Attribute | ::= | NSAttName
Eq
AttValue | |
| QName Eq
AttValue | [NSC: Декларований Префікс] | |||
[NSC: No Prefix Undeclaring] | ||||
[NSC: Унікальні Атрибути] |
Приклад використання повного ім'я, в якості імені атрибута:
<x xmlns:edi='http://ecommerce.example.org/schema'> <!-- Простір імен атрибуту 'taxClass' є http://ecommerce.example.org/schema --> <lineItem edi:taxClass="exempt">Baby food</lineItem> </x>
Обмеження простору імен: Декларований Префікс
Префікс простору імен, за винятком якщо він xml
або xmlns
,
ПОВИНЕН
бути оголошеним у оголошенні простору імен
атрибута, у будь-якому початковому тегу елемента, де використовується префікс або в тому елементі, який є його предком (тобто, елемент у
вмісті якого, діє префіксна розмітка).
Обмеження простору імен: No Prefix Undeclaring
У оголошенні простору імен для префіксу (тобто, де NSAttName є PrefixedAttName), значення атрибуту НЕ ПОВИННО бути порожнім.
Це обмеження може призвести до операційних труднощів, у разі, де атрибут оголошення простору імен забезпечено, не безпосередньо у об'єкті документу XML, а за допомогою атрибуту за замовчуванням, який було оголошено у зовнішньому об'єкті. Такі оголошення не можуть бути зчитаними програмним забезпеченням, яке ґрунтується на неперевіряючому процесорі XML. Багато програм XML, імовірно, в тому числі чутливих до простору імен, не в стані вимагати перевіряючих процесорів. Якщо вимагається коректна робота з такими програмами, оголошення простору імен ПОВИННО бути забезпечене безпосередньо, або через атрибути за замовчуванням, які оголошені у внутрішній підмножині DTD.
Назви елементів та назви атрибутів також наведені в якості повних імен, коли вони оголошуються у DTD:
[16] | doctypedecl | ::= | '<!DOCTYPE' S
QName (S
ExternalID)?
S? ('['
(markupdecl
| PEReference
| S)*
']'
S?)? '>' |
[17] | elementdecl | ::= | '<!ELEMENT' S
QName
S
contentspec
S? '>' |
[18] | cp | ::= | (QName
| choice
| seq)
('?' | '*' | '+')? |
[19] | Mixed | ::= | '(' S?
'#PCDATA'
(S?
'|'
S?
QName)*
S?
')*' |
| '(' S? '#PCDATA' S? ')'
| |||
[20] | AttlistDecl | ::= | '<!ATTLIST' S
QName
AttDef*
S? '>' |
[21] | AttDef | ::= | S
(QName | NSAttName)
S AttType
S DefaultDecl |
Зверніть увагу, що перевірка, яку засновано на DTD, не є простором імен у наступному сенсі:
DTD обмежує елементи та атрибути, які можуть з'явитися у документі в якості своїх імен, що не інтерпретуються,
а не за парами (назва простору імен, локальне ім'я).
Щоб перевірити документ, який використовує простори імен у відношенні до DTD,
необхідно, щоб префікси, використані в DTD, були такі ж, як і в документі.
Однак, DTD може опосередковано обмежувати простори імен, що використовуються у діючому документі, шляхом надання
#FIXED
значень для атрибутів, які оголошують простори імен.
Область дії оголошення простору імен при оголошенні префіксу полягає від початку відкриваючого тегу, в якому вона з'являється, до кінця відповідного закриваючого тегу, за винятком області дій будь-яких внутрішніх оголошень з такою ж частиною NSAttName. У випадку порожнього тегу, областю є сам тег.
Таке оголошення простору імен поширюється до усіх імен елементів та атрибутів у його області дії, коли їх префікси відповідають тому, який визначено у оголошенні.
Розширене ім'я, яке відповідає префіксному елементу або імені атрибуту має посилання URI, у якому префікс відповідає його назві простору імен, а локальна частина - його локальному імені.
<?xml version="1.0"?>
<html:html xmlns:html='http://www.w3.org/1999/xhtml'>
<html:head><html:title>Frobnostication</html:title></html:head>
<html:body><html:p>Moved to
<html:a href='http://frob.example.com'>here.</html:a></html:p></html:body>
</html:html>
Декілька префіксів простору імен можуть бути оголошені, як атрибути одного елемента, наприклад:
<?xml version="1.0"?> <!-- обидва префікса простору імен доступні звідусіль --> <bk:book xmlns:bk='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6'> <bk:title>Cheaper by the Dozen</bk:title> <isbn:number>1568491379</isbn:number> </bk:book>
Область дії оголошення простору імен за замовчуванням поширюється від початку відкриваючого тегу, у якому він з'являється, і до кінця відповідного закриваючого тегу, за винятком області дій будь-яких внутрішніх оголошень простору імен за замовченням. У випадку порожнього тегу, областю є сам тег.
Оголошення простору імен поширюється до усіх безпрефіксних імен елементів у його області дії. Оголошення просторів імен за замовчуванням не відносяться безпосередньо до імен атрибутів; інтерпретація безпрефіксних атрибутів визначається елементом, в якому вони виникають.
Якщо в області дії існує оголошення простору імен за замовчуванням, розширене ім'я відповідного безпрефіксного імені елемента, має посилання URI простору імен за замовчуванням, що відповідає назві простору імен. Якщо в області дії немає жодного оголошення простору імен за замовчуванням, значення для назви простору імен буде відсутнє. Значення для назви простору імен безпрефіксного імені атрибута, завжди буде відсутнє. У всіх випадках локальне ім'я, це є локальна частина (яка, звичайно ж, така сама як і безпрефіксне ім'я).
<?xml version="1.0"?>
<!-- елементи в просторі імен HTML, в цьому випадку за замовчуванням -->
<html xmlns='http://www.w3.org/1999/xhtml'>
<head><title>Frobnostication</title></head>
<body><p>Moved to
<a href='http://frob.example.com'>here</a>.</p></body>
</html>
<?xml version="1.0"?> <!-- типи елемента без префікса з простору імен "books" --> <book xmlns='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6'> <title>Cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> </book>
Розширений приклад, який показує область дій простору імен:
<?xml version="1.0"?>
<!-- початковим простором імен за замовчуванням, є "books" -->
<book xmlns='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6'>
<title>Cheaper by the Dozen</title>
<isbn:number>1568491379</isbn:number>
<notes>
<!-- для деяких коментарів, зробимо простір імен HTML, за замовчуванням -->
<p xmlns='http://www.w3.org/1999/xhtml'>
This is a <i>funny</i> book!
</p>
</notes>
</book>
Значення атрибуту у оголошенні простору імен за замовчуванням МОЖЕ бути порожнім. Це буде мати такий самий ефект, як би в межах дії цього оголошення, простору імен за замовчуванням, взагалі не було оголошено.
<?xml version='1.0'?> <Beers> <!-- всередині таблиць, простором імен за замовчуванням використовується HTML --> <table xmlns='http://www.w3.org/1999/xhtml'> <th><td>Name</td><td>Origin</td><td>Description</td></th> <tr> <!-- всередині елементів таблиці, немає простору імен за замовчуванням --> <td><brandName xmlns="">Huntsman</brandName></td> <td><origin xmlns="">Bath, UK</origin></td> <td> <details xmlns=""><class>Bitter</class><hop>Fuggles</hop> <pro>Wonderful hop, light alcohol, good summer beer</pro> <con>Fragile; excessive variance pub to pub</con> </details> </td> </tr> </table> </Beers>
Обмеження простору імен: Унікальні Атрибути
У документах XML відповідно до цієї специфікації, жоден тег не може містити два атрибути які:
мають ідентичні імена, або
мають повні імена з однаковою локальною частиною та із префіксами які пов'язані з ідентичними назвами просторів імен.
Це обмеження еквівалентно до необхідності, що жоден елемент не може мати два атрибути з однаковим розширеним ім'ям.
Наприклад, кожен з bad
тегів порожнього елемента, є невірним:
<!-- http://www.w3.org пов'язано з n1 та n2 --> <x xmlns:n1="http://www.w3.org" xmlns:n2="http://www.w3.org" > <bad a="1" a="2" /> <bad n1:a="1" n2:a="2" /> </x>
Однак, кожен з наступних тегів вірний, тому що простір імен за замовчуванням, не поширюється на імена атрибутів:
<!-- http://www.w3.org пов'язано з n1 та є простором за замовчуванням --> <x xmlns:n1="http://www.w3.org" xmlns="http://www.w3.org" > <good a="1" b="2" /> <good a="1" n1:a="2" /> </x>
Ця специфікація відноситься до документів XML 1.0. Щоб відповідати даній специфікації, документ ПОВИНЕН бути правильно сформований у відповідності до специфікації XML 1.0 [XML].
У документах XML, які відповідають цій специфікації, імена елементів та атрибутів ПОВИННІ відповідати конструкції для QName та ПОВИННІ задовольняти "Обмеженням простору імен". Щоб відповідати конструкції XML для Name, усі інші лексеми у документі які НЕОБХІДНІ для забезпечення коректності XML 1.0, ПОВИННІ відповідати конструкції цієї специфікації для NCName.
[Визначення: Документ стає коректно-сформованим, по відношенню до простору імен якщо він відповідає даній специфікації. ]
З цього випливає, що в коректно-сформованому, по відношенню до простору імен, документі:
Усі імена елементів та атрибутів містять у собі одну двокрапку, або не містять її взагалі;
Імена сутностей, інструкції з обробки цілей або імена позначень, не містять жодної двокрапки.
Окрім того, коректно-сформований документ, по відношенню до простору імен, також може бути дійсним.
[Визначення: коректно-сформований документ, по відношенню до простору імен, буде валідним, якщо він валідний у відповідності до специфікації XML 1.0, та усі лексеми, окрім імен елементів та атрибутів які НЕОБХІДНІ, для забезпечення коректності XML 1.0, відповідають конструкції цієї специфікації для NCName, щоб відповідати конструкції XML для Name. ]
З цього випливає, що у дійсному документі, по відношенню до простору імен:
Жоден з атрибутів із оголошеним типом ID, IDREF(S), ENTITY(IES), або NOTATION не містить двокрапок.
Для того, щоб відповідати цій специфікації, процесор ПОВИНЕН повідомляти про порушення у коректно-сформованому просторі імен, за винятком, коли немає НЕОБХІДНОСТІ перевіряти, чи є назви просторів імен - посиланнями URI [RFC3986].
[Визначення: Процесор перевірки коректності XML, який відповідає до цієї специфікації, є перевіркою коректності простору імен, якщо він, окрім того, сповіщає про порушення коректності простору імен. ]
Ця версія включає в себе виправлення станом на 20 липня 2009 року [Виправлення 1.0] [Виправлення 1.0 (друга редакція)].
Є кілька змін редакційного характеру, включаючи декілька змін та доповнень до термінології призначеної для отримання більшої узгодженості. Було видалено ненормативний додаток "Внутрішня структура просторів імен у XML". BNF (Backus–Naur Form) була скоригована для з'єднання належним чином з усіма виданнями XML 1.0, в тому числі п'ятого видання.
Ця робота відображає внесок від дуже великої кількості людей, особливо хочеться відзначити учасників World Wide Web Consortium XML Working Group та Special Interest Group, й учасників з W3C Metadata Activity. Особливо цінним є внесок Чарльза Френкстона з Microsoft.
Наступні дві конструкції є модифікованими версіями тих, які були представлені в перших двох виданнях цієї специфікації. Вони більше не використовуються, а зберігаються тут, щоб задовольнити перехресні посилання на недатовані версії даної специфікації.
Оскільки конструкція XML 1.0 Letter
, яка спочатку використовувалася у визначенні NCNameStartChar
, більше не є коректною основою для визначення імен починаючи з п'ятого видання XML 1.0, тому конструкцію NCNameStartChar
було змінено, щоб надати правильні результати для будь-якого видання XML, визначаючи NCNameStartChar
з точки зору NCName.
[5] | NCNameChar | ::= | NameChar
- ':' /* NameChar XML, за виключенням ":" */ |
[6] | NCNameStartChar | ::= |
NCName - ( Char Char Char* ) /* Перший символ NCName */
|
Примітка:
Конструкція NC-NCNameStartChar використовує у своїх інтересах той факт, що односимвольний NCName є обов'язково NCNameStartChar, та працює шляхом вирахування з набору NCNames набір усіх рядків, які складаються з двох або більше символів, залишаючи лише NCNames, довжина якого складає один символ.