Цей документ є неофіційним перекладом початкової англійської версії xml:id Version 1.0. Зверніть увагу на те, що оригінальна версія документа існує тільки на англійській мові. Цей переклад може містити неточності та помилки. Переклад виконав © Сергієнко Сергій, 2011. За підтримкою сайту husky compressor. Коментарі до перекладу залишайте тут! | | На головну

W3C

xml:id, Версія 1.0

Рекомендація W3C від 9 вересня 2005 року

Поточна версія:
http://www.w3.org/TR/2005/REC-xml-id-20050909/
Остання версія:
http://www.w3.org/TR/xml-id/
Попередня версія:
http://www.w3.org/TR/2005/PR-xml-id-20050712/
Редактори:
Джонатан Марш (Jonathan Marsh), Microsoft <jmarsh@microsoft.com>
Деніел Вейллерд (Daniel Veillard), Invited Expert <daniel@veillard.com>
Норман Уолш (Norman Walsh), Sun Microsystems <Norman.Walsh@Sun.COM>

Будь ласка, зверніться до сторінки виправлень цього документу, яка може включати до себе нормативні зміни.

Див. також переклади.

Цей документ, також можна переглянути у таких ненормативних форматах: XML.


Анотація

Цей документ визначає значення атрибута xml:id, у якості ID атрибуту в документах XML та визначає обробку цього атрибута для визначення ID в умовах відсутності перевірок на дійсність та без залучення зовнішніх ресурсів і не покладаючись на внутрішню підмножину.

Статус цього Документу

Цей розділ описує статус даного документу на час його публікації. Інші документи можуть заміняти цей документ. Зі списком поточних публікацій W3C та останньої ревізії цього технічного докладу можна ознайомитись у індексі технічних докладів W3C на http://www.w3.org/TR/.

Цей документ є Рекомендацією W3C. Даний документ був підготовлений Основною Робочою групою W3C XML, яка входить до складу XML Activity. Він був розглянутий членами W3C і іншими зацікавленими сторонами, та був схвалений Директором. Це стабільний документ і він може бути використаний в якості довідкового матеріалу або цитат в іншому документі. Роль W3C у розробці Рекомендації, полягає в залученні уваги до специфікації, і сприяти її широкому поширенню. Це підвищує функціональність і сумісність у Веб (Web).

Англійська версія цієї специфікації є єдиною нормативною версією. Можуть бути доступні переклади цього документа.

Якщо Ви маєте будь-які коментарі стосовного цього документа, надсилайте їх за адресою public-xml-id@w3.org, доступний публічний список електронних листів у публічному архіві. Для цього видання, також існує перелік виправлень.

Цей документ визначає значення атрибута xml:id, у якості ID атрибуту в документах XML та визначає обробку цього атрибута для визначення ID в умовах відсутності перевірок на дійсність та без залучення зовнішніх ресурсів і не покладаючись на внутрішню підмножину DTD.

Цей документ заснований на Запропонованій Рекомендації xml:id Версія 1.0 від 12 липня 2005 року. Відгуки, отримані під час цього огляду, призвели до незначних редакційних змін. Свідчення взаємодій як мінімум між двома реалізаціями цієї специфікації описані у Звіті про реалізації. Доступний також і набір тестів.

Цей документ був підготовлений з урахуванням Патентної політики W3C від 5 лютого 2004 року. Робоча Група підтримує публічний список відкритих патентів, які мають відношення до цього документу; дана сторінка також включає до себе інструкції з розкриття [та виключення] патенту. Лиця, які володіють актуальною інформацією про патент, який задовольняє Основним Вимогам, щодо даної специфікації, повинні розкрити цю інформацію, згідно пункту 6 патентної політики W3C.

Зміст

1 Введення
2 Термінологія
3 Синтаксис
4 Обробка атрибутів xml:id
5 Інформування програм
6 Помилки
7 Відповідність
    7.1 Відповідність xml:id
    7.2 Відповідність Інформаційного набору XML
8 Розширюваність

Додатки

A Посилання
B Посилання (Ненормативні)
C Вплив на канонізацію (Ненормативні)
D Технології перевірки достовірності (Ненормативні)
    D.1 За допомогою DTD перевірки достовірності
    D.2 За допомогою XML Schema перевірки достовірності
    D.3 За допомогою RELAX NG перевірки достовірності
E Нормалізація значення атрибуту по ID (Ненормативні)


1 Введення

[XML 1.0] та [XML 1.1] забезпечують механізм для анотування елементів із унікальними ідентифікаторами. Цей механізм складається з оголошення типу атрибута, як "ID", після чого парсер буде перевіряти, що

Оголошення у будь-якій внутрішній або зовнішній підмножині DTD документа XML може оголосити атрибути типом ID. Однак, обробка зовнішньої підмножини DTD не є обов'язковою для сумісних процесорів XML; та деякі специфікації , зокрема [SOAP], забороняють повністю DTD, не залишаючи гарантій, що усі користувачі документа XML будуть здатні успішно розпізнати ідентифікатори.

Також, ідентифікатори можуть бути оголошені через зовнішні механізми. Особливий інтерес представляє [XML Schema], яка забезпечує тип "xs:ID" з тією ж унікальністю і валідністю обмежень, як і XML. Однак немає ніяких гарантій, що користувачі будуть отримувати "правильні" схеми і, що вони будуть обробляти їх, у разі якщо вони їх отримають.

Бажано, щоб механізм, який дозволяє унікальні ідентифікаторі елементів, і який буде визнаний всіма сумісними процесорами XML, будь вони перевіряючими чи ні, забезпечував надійний зв'язок суб-ресурсу XML. Ця специфікація дозволяє авторам ідентифікувати елементи з ID, які можуть бути розпізнані будь-яким процесором без урахування того як доступні, або якщо доступні, будь-які внутрішні чи зовнішні оголошення.

Додатковою проблемою є те, що ідентифікатори, які засновані на DTD і на XML Schema, надаються через різні концептуальні механізми - тип атрибуту властивості інформаційного набору, і визначення типу сімейства властивостей, відповідно. Бажано використовувати єдиний механізм для визначення ідентифікаторів.

Ця специфікація забезпечує такий механізм: він змальовує семантику атрибутів xml:id. Дана специфікація була розроблена для того, щоб бути окремим рівнем в обробці, та бути сумісною з існуючими технологіями перевірок на дійсність. Розробникам рекомендується підтримувати обробки xml:id та робити призначення типу ID, поведінкою своїх процесорів за замовчуванням.

Це було одним із принципів яким керувались при розробці цієї специфікації, тобто, що результату обробки xml:id слід бути таким самим, як якщо б відповідне оголошення було замічено та використано процесором.

2 Термінологія

[Визначення: Ключові слова обов'язково (must), не обов'язково (must not), необхідно (required), повинен (shall), не повинен (shall not), слід (should), не слід (should not), рекомендовано (recommended), може (may), та додатковий (optional) у цій специфікації повинні інтерпретуватися, як це визначено у документі [IETF RFC 2119].]

[Визначення: Процесор xml:id - являє собою програмний модуль, який робить у поєднанні з процесором XML для того, щоб надати доступ до ID у документі XML.]

[Визначення: Помилка xml:id - є не критичною помилкою, яка з'являється тоді, коли процесор xml:id вважає, що документ порушує обмеження цієї специфікації.]

Перевірка дійсності являє собою процес порівняння документу XML (або частини документа XML), по відношенню до граматики або набору правил, з метою визначення, чи задовольняє фактична структура документа вимогам граматики або правил. Деякі технології перевірки дійсності, також виконуючи призначення типу, не тільки визначають, чи задовольняє документ спеціальним обмеженням, а також вони визначають, наприклад, які (елементи і/або) атрибути є типом “ID”.

Найчастіше, перевірка і призначення типу, проведені спільно, не є одним і тим же процесом. Наприклад, не перевіряючий процесор XML 1.0, може виконувати призначення типу, використовуючи тільки оголошення з внутрішньої підмножини, навіть не маючи ніякої інформації про структурну перевірку документа.

[Визначення: Процес призначення типа ID призводить до того, що значення атрибуту xml:id становиться ID.] Це найчастіше досягається шляхом створення типу атрибута "ID" в інформаційному наборі або в пост-схемо-перевірки інформаційного набору (post-schema-validation infoset - PSVI), проте це не єдино-можливий механізм.

Примітка:

Обробки ID на рівні програм, включають до себе обробки елементів до яких фактично можуть звернутися через значення ID, але це виходить за межі цієї специфікації.

3 Синтаксис

Згідно [Просторам імен у XML][Просторам імен у XML 1.1]), префікси, які починаються з “xml” зарезервовані для використання у XML і у специфікаціях пов'язаних із XML. Ця специфікація надає право використовувати атрибут “xml:id” для використання у якості загального синтаксису для ідентифікаторів у XML з семантикою, яка описана у цьому документі.

Авторам документів XML пропонується називати їх атрибути ID, як "xml:id", для того, щоб збільшити сумісність цих ідентифікаторів в Інтернеті.

У процесорах обізнаних про те, що таке простір імен XML, префікс "xml" пов'язаний з ім'ям простору імен http://www.w3.org/XML/1998/namespace, як це було описано у Просторах імен у XML [Простори імен у XML][Простори імен у XML 1.1]). Відмітьте, що xml:id може бути все ще використаний процесорами, які не обізнані про простір імен XML.

4 Обробки Атрибутів xml:id

Кожен атрибут xml:id обробляється наступним чином:

  1. Значення атрибуту нормалізується, згідно правил для нормалізації атрибута-значення, за атрибутами типу ID. Для отримання додаткової інформації, див. E Нормалізація значення атрибуту за ID.

    Властивість нормалізованого значення інформаційного набору, оновлюється із нормалізованим значенням.

  2. Призначення типу ID виконується із нормалізованим значенням.

Процесор xml:id забов'язан гарантувати, що наступні обмеження справедливі для усіх атрибутів xml:id:

Процесор xml:id має гарантувати, що наступні обмеження є справедливими:

Помилка xml:id виникає для любого атрибуту xml:id, який не задовольняє обмеженням.

Процесор xml:id виконує призначення типу ID в усіх атрибутах xml:id, навіть у тих, які не задовольняють обмеженням.

Процесору xml:id слід оновити властивості посилань інформаційного набору, як це визначено у Розділі 2.3 [Інформаційний набор XML], та оновити будь-які структури, залежні від реалізації, та які використовуються для перехресних посилань, щоб відобразити результати призначення типу ID.

Багато технологій перевірок достовірності накладають обмеження таким чином, що елемент XML може мати не більше одного атрибут типу ID. Це обмеження не накладається на обробки xml:id.

Ця специфікація визначає обробку xml:id, але визначення, коли така обробка виникає, залежить від програми. Користувачі програм, які надають можливості для зміни документів XML, можуть обґрунтовано очікувати обробку xml:id, яка відбувається щоразу, коли вносяться зміни до значення ID.

5 Інформування програм

Коли відбуваються призначення типу ID, процесор xml:id повинен повідомити призначені атрибути xml:id для програми. Яким чином ці повідомлення будуть відбуватися, залежить від реалізації.

Основною вимогою є те, що програма буде поінформована про результати призначення типу ID.

6 Помилки

Порушення обмежень в цій специфікації призводить до помилки xml:id. Такі помилки не є критичними, проте про ці помилки слід повідомляти через процесор xml:id. З метою сумісності, настійно рекомендується, щоб помилки xml:id не були проігноровані.

7 Відповідність

7.1 Відповідність до xml:id

Відповідність до xml:id для програм, які спираються на процесори XML, які використовують технології перевірки дійсності, полягає у використанні конструкції xml:id, як це пояснюється у розділі 4 Обробки атрибутів xml:id, а також у відповідності до обмежень цієї специфікації та правил технологій перевірки дійсності.

Відповідність до xml:id для програм, які спираються на неперевіряючі процесори XML, визначаються визнанням атрибутів xml:id, як це пояснюється у розділі 4 Обробки атрибутів xml:id, а також у відповідності до обмежень цієї специфікації.

Відповідність до обмежень, які “повинні” бути засвідченими, є обов'язковим. Рекомендується, щоб додатки також забезпечували й інші обмеження. Ця специфікація не визначає жодних простих додаткових обмежень.

Документ є сумісним з даною специфікацією, якщо він не генерує помилок xml:id.

7.2 Відповідність Інформаційного набору XML

Ця специфікація відповідає [Інформаційного набору XML]. Наступні інформаційні пункти, повинні бути присутніми у вхідних інформаційних наборах для того, щоб використовувалася коректна обробка:

  • Інформаційні Пункти Елементу з властивостями атрибутів.

  • Інформаційні Пункти Атрибуту з властивостями назви просторів імен, локального імені та нормалізованого значення.

Окрім того, у вихідному інформаційному наборі можуть бути присутніми наступні властивості:

  • властивості типу атрибута у Інформаційних Пунктах Атрибуту.

8 Розширення

Ця специфікація не є розширюваною. Для розробників програм не передбачено змінювати: ім'я атрибуту xml:id, набір значень атрибуту, які вважаються ID, містоположення у якому вони можуть виникнути або робити будь-які інші розширення.

A Посилання

IETF RFC 2119
RFC 2119: Ключові слова для використання у документах RFC з метою позначення рівня вимог. Internet Engineering Task Force, 1997. (Див. http://www.ietf.org/rfc/rfc2119.txt.)
XML 1.0
Редактори: Тім Брей (Tim Bray), Жан Паолі (Jean Paoli), М. Сперберг-МакКвін (C.M. Sperberg-McQueen), та інші. Розширювана мова розмітки (XML) 1.0 (Третє видання). World Wide Web Consortium, 2004. (Див. http://www.w3.org/TR/REC-xml/.)
XML 1.1
Редактори: Тім Брей, Жан Паолі, М. Сперберг-МакКвін, та інші. Розширювана мова розмітки (XML) 1.1. World Wide Web Consortium, 2004. (Див. http://www.w3.org/TR/xml11/.)
Інформаційний набір XML
Редактори: Джон Коуан (John Cowan) та Річард Тобін (Richard Tobin). Інформаційний набір XML (Друге видання). World Wide Web Consortium, 2004. (Див. http://www.w3.org/TR/xml-infoset/.)
Простори імен у XML
Редактори: Тім Брей, Дейв Холландер (Dave Hollander) і Ендрю Леймен (Andrew Layman). Простори імен у XML. World Wide Web Consortium, 1999. (Див. http://www.w3.org/TR/REC-xml-names/.)
Простори імен у XML 1.1
Редактори: Тім Брей, Дейв Холландер, Ендрю Леймен, і Річард Тобін. Простори імен у XML 1.1. World Wide Web Consortium, 2004. (Див. http://www.w3.org/TR/xml-names11/.)

B Посилання (Ненормативні)

XML Schemas
Редактори: Генрі С. Томпсон (Henry S. Thompson), Дейвід Біч (David Beech), Мюррей Мелоні (Murray Maloney), Ноа Мендельсон (Noah Mendelsohn). XML Schema, Частина 1: Структури. World Wide Web Consortium, 2001. (Див. http://www.w3.org/TR/xmlschema-1/.)
SOAP
Редактори: Мартін Гаджин (Martin Gudgin), Марк Хендлі (Marc Hadley), Ноа Мендельсон та інші. SOAP Версія 1.2, Частина 1: Каркас надсилання повідомлень. World Wide Web Consortium, 2003. (Див. http://www.w3.org/TR/soap12-part1/.)

C Вплив на Канонізацію (Ненормативне)

Специфікація Канонічний XML Версія 1.0 змальовує процес, за допомогою якого атрибути в xml: просторі імен успадковуються в канонічний документ. Хоча це і дає прийнятний результат з атрибутами xml:lang або xml:space, обробка таким чином атрибутів xml:id, скоріш за все надасть документи, які містять помилки xml:id, зокрема значення атрибуту xml:id, які не є унікальними.

Це очевидний недолік у розробці Канонічного XML. Специфікація Ексклюзивна Канонізація XML, Версія 1.0 не має цієї особливості і може бути більш придатною для документів, які містять ID.

D Технології перевірки достовірності (Ненормативне)

У цьому додатку описується, як обробки xml:id взаємодіють з вибраними технологіями перевірки.

D.1 За допомогою DTD перевірки достовірності

Авторам DTD рекомендується використовувати атрибути xml:id, при наданні ідентифікаторів для елементів, які були оголошені у їхньому DTD.

Наступний фрагмент DTD ілюструє зразок оголошення для атрибута xml:id:

<!ATTLIST someElement
    xml:id     ID          #IMPLIED
>

Авторам DTD рекомендується оголошувати атрибути іменовані, як xml:id, з типом ID. Документ, який використовує атрибути xml:id, що мають оголошений тип відмінний від ID, завжди буде видавати помилки xml:id.

Споживачі документів, перевіряючи на достовірність за допомогою правильно оголошених атрибутів xml:id, можуть розпізнавати ID за допомогою властивості типу атрибута.

D.2 За допомогою XML Schema перевірки достовірності

Авторам XML Schema рекомендується використовувати атрибути xml:id, при наданні ідентифікаторів для елементів, які були оголошені у своїх схемах. Зверніть увагу, що це легше за все досягається шляхом імпорту схеми для простору імен XML та використання оголошення атрибуту, що в ньому міститься.

Наступний фрагмент XML Schema для простору імен XML, ілюструє зразок оголошення для атрибута xml:id:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/XML/1998/namespace">

    <xs:attribute name="id" type="xs:ID"/>

</xs:schema>

Авторам XML Schema рекомендується оголошувати атрибути іменовані, як xml:id, з типом xs:ID. Документ, який використовує атрибути xml:id, що мають оголошений тип відмінний від xs:ID, завжди буде видавати помилки xml:id.

Споживачі документів, перевіряючи на достовірність атрибути xml:id по відношенню до відповідної схеми для простору імен XML, можуть розпізнати ідентифікатори, за допомогою сімейства визначення типу властивостей PSVI.

Програми можуть розпізнати атрибути xml:id як ідентифікатори, шляхом концептуального використання мінімально задовольняючого вимогам процесора схеми та згадуваної раніше схеми.

Відзначте, що наслідки використання мінімально задовольняючого вимогам процесора схеми та обробки схеми, апроксимуються, простіше кажучи, для атрибутів іменованих як xml:id, забезпечуючи значенням таких атрибутів, правильну лексичну форму (NCName), і це значення є унікальним в межах документа.

D.3 За допомогою RELAX NG перевірки достовірності

Авторам RELAX NG Grammar рекомендується використовувати атрибути xml:id, при наданні ідентифікаторів для оголошених елементів в їх схемах.

Наступний фрагмент RELAX NG ілюструє зразок оголошення для атрибута xml:id:

<optional xmlns="http://relaxng.org/ns/structure/1.0"
              datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <attribute name="xml:id">
    <data type="ID"/>
  </attribute>
</optional>

Авторам RELAX NG Grammar рекомендується оголошувати атрибути іменовані, як xml:id з типом xs:ID. Документ, який використовує атрибути xml:id, які мають оголошений тип відмінний від xs:ID, завжди буде генерувати помилки xml:id.

E Нормалізація значення атрибуту по ID (Ненормативне)

[XML 1.0] вимагає аналізатори для нормалізації усіх значень атрибутів. Нормалізація розширює символьні посилання, посилання на сутності, і прибирає символи закінчення рядка. Атрибути типу ID, підлягають додатковим правилам нормалізації: видалення початкових і кінцевих пробілів, і заміна послідовності пробілів на один пробіл.

Процесор xml:id, потрібен для того щоб гарантувати, що обидва кроки нормалізації виповнюються для усіх атрибутів іменованих, як xml:id. Зокрема, аналізатор може не мати додаткових кроків нормалізації необхідних для атрибутів типу ID тому, що атрибут може бути не оголошеним або може бути оголошеним в якості ID.

Розглянемо наступний документ:

<!DOCTYPE doc [
<!ATTLIST doc xml:id ID #IMPLIED>
]>
<doc xml:id="  one
">
<para xml:id="  two
"></para>
</doc>

Початкове значення xml:id в тезі doc буде “one”, оскільки парсер знав, що це був ID. Початкове значення в тезі para буде “ two ”. Тому що парсер не знав, що це був ID, у нього не буде виконуватись додаткова необхідна нормалізація.

Після обробки xml:id, значення атрибутів xml:id в тегах doc і para буде “one” та “two”, відповідно. Ці правильно нормалізовані значення будуть зберігатися у властивостях нормалізованого значення в інфонаборі. Виконання обробки xml:id змінює інфонабор, якщо є не повністю нормалізовані атрибути xml:id.

Примітка:

Для покращення сумісності, виробникам документів слід використовувати повністю нормалізовані значення, які є коректними NCNames в атрибутах xml:id.