Этот документ является не официальным переводом исходной английской версии 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.