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