Цей документ є неофіційним перекладом початкової англійської версії xml:id Version 1.0. Зверніть увагу на те, що оригінальна версія документа існує тільки на англійській мові. Цей переклад може містити неточності та помилки. Переклад виконав © Сергієнко Сергій, 2011. За підтримкою сайту husky compressor. Коментарі до перекладу залишайте тут! | | На головну
Будь ласка, зверніться до сторінки виправлень цього документу, яка може включати до себе нормативні зміни.
Див. також переклади.
Цей документ, також можна переглянути у таких ненормативних форматах: XML.
Copyright © 2005 W3C® (MIT, ERCIM, Keio), Усі права захищені. W3C дотримується правил відповідальності, торгівельної марки та використання документів.
Цей документ визначає значення атрибута xml:id
, у якості ID атрибуту в документах XML та визначає обробку цього атрибута для визначення ID в умовах відсутності перевірок на дійсність та без залучення зовнішніх ресурсів і не покладаючись на внутрішню підмножину.
Цей розділ описує статус даного документу на час його публікації. Інші документи можуть заміняти цей документ. Зі списком поточних публікацій W3C та останньої ревізії цього технічного докладу можна ознайомитись у індексі технічних докладів W3C на http://www.w3.org/TR/.
Цей документ є Рекомендацією W3C. Даний документ був підготовлений Основною Робочою групою W3C XML, яка входить до складу XML Activity. Він був розглянутий членами W3C і іншими зацікавленими сторонами, та був схвалений Директором. Це стабільний документ і він може бути використаний в якості довідкового матеріалу або цитат в іншому документі. Роль W3C у розробці Рекомендації, полягає в залученні уваги до специфікації, і сприяти її широкому поширенню. Це підвищує функціональність і сумісність у Веб (Web).
Англійська версія цієї специфікації є єдиною нормативною версією. Можуть бути доступні переклади цього документа.
Якщо Ви маєте будь-які коментарі стосовного цього документа, надсилайте їх за адресою [email protected], доступний публічний список електронних листів у публічному архіві. Для цього видання, також існує перелік виправлень.
Цей документ визначає значення атрибута 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 (Ненормативні)
[XML 1.0] та [XML 1.1] забезпечують механізм для анотування елементів із унікальними ідентифікаторами. Цей механізм складається з оголошення типу атрибута, як "ID", після чого парсер буде перевіряти, що
значення ID відповідає дозволеній лексичній формі,
значення є унікальним в межах документа XML, та що
кожний елемент має не більш ніж один унікальний ідентифікатор
Оголошення у будь-якій внутрішній або зовнішній підмножині 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
слід бути таким самим, як якщо б відповідне оголошення було замічено та використано процесором.
[Визначення: Ключові слова обов'язково (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, але це виходить за межі цієї специфікації.
Згідно [Просторам імен у 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.
xml:id
Кожен атрибут xml:id
обробляється наступним чином:
Значення атрибуту нормалізується, згідно правил для нормалізації атрибута-значення, за атрибутами типу ID. Для отримання додаткової інформації, див. E Нормалізація значення атрибуту за ID.
Властивість нормалізованого значення інформаційного набору, оновлюється із нормалізованим значенням.
Призначення типу ID виконується із нормалізованим значенням.
Процесор xml:id
забов'язан гарантувати, що наступні обмеження справедливі для усіх атрибутів xml:id
:
Нормалізоване значення атрибуту це NCName
, згідно Рекомендації Просторів імен у XML, який має таку ж саму версію, як і документ в якому цей атрибут з'являється (NCName для XML 1.0, або NCName для XML 1.1).
Оголошений тип атрибуту, якщо такий існує, є “ID”. Усі оголошення для атрибутів xml:id
забов'язані визначати “ID”, у якості типу атрибута.
Процесор xml:id
має гарантувати, що наступні обмеження є справедливими:
Значення усіх атрибутів типу “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.
Коли відбуваються призначення типу ID, процесор xml:id повинен повідомити призначені атрибути xml:id
для програми. Яким чином ці повідомлення будуть відбуватися, залежить від реалізації.
Для програм, які концептуально працюють на інформаційному наборі, процесор xml:id
може використовувати тип атрибуту властивості інформаційного набору:
Процесор xml:id
може повідомляти результати призначення типу ID сумісним чином для DTD, встановив тип атрибуту властивості атрибута інфонабору у ID.
Для програм, які концептуально працюють на PSVI, процесор xml:id
може використовувати сімейства визначення типу у властивостях PSVI:
Процесор xml:id
може повідомляти результати призначення типу ID сумісним чином для XML Schema, встановив PSVI визначення типу властивості атрибуту у xs:ID
.
Для програм, які працюють на моделях даних, які визначені іншими способами, механізми реалізації залежать від:
Процесор xml:id
може повідомляти результати призначення типу ID іншим способом.
Основною вимогою є те, що програма буде поінформована про результати призначення типу ID.
Порушення обмежень в цій специфікації призводить до помилки xml:id. Такі помилки не є критичними, проте про ці помилки слід повідомляти через процесор xml:id. З метою сумісності, настійно рекомендується, щоб помилки xml:id
не були проігноровані.
Відповідність до xml:id
для програм, які спираються на процесори XML, які використовують технології перевірки дійсності, полягає у використанні конструкції xml:id
, як це пояснюється у розділі 4 Обробки атрибутів xml:id, а також у відповідності до обмежень цієї специфікації та правил технологій перевірки дійсності.
Відповідність до xml:id
для програм, які спираються на неперевіряючі процесори XML, визначаються визнанням атрибутів xml:id
, як це пояснюється у розділі 4 Обробки атрибутів xml:id, а також у відповідності до обмежень цієї специфікації.
Відповідність до обмежень, які “повинні” бути засвідченими, є обов'язковим. Рекомендується, щоб додатки також забезпечували й інші обмеження. Ця специфікація не визначає жодних простих додаткових обмежень.
Документ є сумісним з даною специфікацією, якщо він не генерує помилок xml:id.
Ця специфікація відповідає [Інформаційного набору XML]. Наступні інформаційні пункти, повинні бути присутніми у вхідних інформаційних наборах для того, щоб використовувалася коректна обробка:
Інформаційні Пункти Елементу з властивостями атрибутів.
Інформаційні Пункти Атрибуту з властивостями назви просторів імен, локального імені та нормалізованого значення.
Окрім того, у вихідному інформаційному наборі можуть бути присутніми наступні властивості:
властивості типу атрибута у Інформаційних Пунктах Атрибуту.
Специфікація Канонічний XML Версія 1.0 змальовує процес, за допомогою якого атрибути в xml:
просторі імен успадковуються в канонічний документ. Хоча це і дає прийнятний результат з атрибутами xml:lang
або xml:space
, обробка таким чином атрибутів xml:id
, скоріш за все надасть документи, які містять помилки xml:id, зокрема значення атрибуту xml:id
, які не є унікальними.
Це очевидний недолік у розробці Канонічного XML. Специфікація Ексклюзивна Канонізація XML, Версія 1.0 не має цієї особливості і може бути більш придатною для документів, які містять ID.
У цьому додатку описується, як обробки xml:id
взаємодіють з вибраними технологіями перевірки.
Авторам 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 за допомогою властивості типу атрибута.
Авторам 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), і це значення є унікальним в межах документа.
Авторам 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.
[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
.