REC-xml-names-19990114Пространства имен в XMLWorld Wide Web Консорциум, 14 января 1999 года
Copyright © 1999 W3C (MIT, INRIA, Keio ). Все права защищены. В отношении данного документа действуют правила W3C, касающиеся ответственности, торговой марки, использования документа и лицензирования программного обеспечения. Статус данного документаДанный документ был рассмотрен членами W3C, другими заинтересованными сторонами и утвержден Директором в качестве Рекомендации W3C. Данный документ является окончательным и может использоваться как нормативный материал для ссылки и цитирования в других документах. Участие W3C в продвижении представленной Рекомендации заключается в привлечении к ней внимания и способствовании ее широкому распространению. Тем самым наращиваются функциональные возможности и повышается степень универсальности Сети. Перечень ошибок, обнаруженных в данной спецификации, представлен на странице http://www.w3.org/XML/xml-names-19990114-errata. Об ошибках, обнаруженных в данном документе, просьба сообщать по адресу xml-names-editor@w3.org. РезюмеПространство имен XML обеспечивает простую методику получения названий для элементов и атрибутов в документах, использующих расширяемый язык разметки. Осуществляется это путем привязки последних к пространствам имен, идентифицируемым с помощью ссылок URI. Содержание
Приложения
1. Причины возникновения и краткое описаниеМы предвидим появление таких приложений для обработки расширенного языка разметки (XML), когда в одном XML документе (обычно называемом "словарем разметки") собраны элементы и атрибуты, определяемые и используемые во многих программных модулях. Повод для появления такой модульности: если имеется понятный словарь разметки и есть использующее его программное обеспечение, то проще использовать такую разметку еще раз, чем изобретать ее заново. Подобные документы, содержащие несколько словарей разметки, порождают проблемы распознания и коллизии. Программные модули должны уметь распознавать тэги и атрибуты, для обработки которых они созданы, даже если имеют место "коллизии", когда выясняется, что разметка, разработанная для двух различных программных пакетов, использует одни и те же типы элементов и названия атрибутов. Подобные соображения выдвигают требование, чтобы конструкции документа использовали универсальные имена, область действия которых выходит за рамки того документа, где они были определены. Данная спецификация описывает механизм - пространства имен XML - позволяющий выполнить это условие. [Определение:] Пространство имен XML - это идентифицируемая с помощью ссылки URI [RFC2396] коллекция имен, используемых в XML документах для обозначения типов элементов и именования атрибутов. Пространство имен XML отличается от тех "пространств имен", которые обычно используются в компьютерных дисциплинах, тем, что в варианте для XML оно имеет внутреннюю структуру, и, с математической точки зрения, набором не является. Данные вопросы обсуждаются в Приложении "A. Внутренняя структура пространства имен XML". [Определение:] Используемые для идентификации пространств имен ссылки URI считаются идентичными, если они совпадают с точностью до символа. Заметим, что ссылки URI, не являющиеся идентичными в указанном смысле, в действительности по функциональности могут быть эквивалентны. Примером могут служить ссылки, отличающиеся только регистром, а также ссылки во внешних сущностях, имеющие иной базовый адрес URI. Названия в пространстве имен XML могут быть представлены в виде полных имен (qualified names), содержащих единственный символ двоеточия, делящий такое имя на префикс пространства имен и локальную часть. С помощью префикса, привязанного к ссылке URI, осуществляется выбор пространства имен. Сочетание единообразно обрабатываемого URI пространства имен и собственного пространства имен документа формирует идентификатор, уникальный повсюду. Дается методика определения области видимости префикса и значения по умолчанию. Ссылка URI может содержать символы, недопустимые для имен, поэтому саму ссылку нельзя использовать в качестве префикса пространства имен. Таким образом, префикс пространства имен служит заменителем ссылки URI. Далее описывается построенный на атрибутах синтаксис, позволяющий декларировать связь префикса пространства имен со ссылкой URI. Программное обеспечение, поддерживающее указанный сценарий использования пространства имен, должно уметь анализировать и использовать описанные декларации и префиксы. 1.1 Замечания по нотации и использованиюОтметим, что многие используемые в сценариях этой спецификации нетерминальные конструкции определяются не здесь, а в спецификации XML [XML]. Если определенная здесь нетерминальная конструкция имеет то же самое имя, что было определено для нетерминала в спецификации XML, то множество строк, соответствующих сценарию здесь, является лишь подмножеством всех строк, соответствующих сценарию там. В сценариях этого документа аббревиатура Заметим, что все использованные в примерах названия доменов Internet (за исключением 2. Декларирование пространства имен[Определение:] Пространство имен декларируется с помощью набора зарезервированных атрибутов. Названием такого атрибута должно быть
[Определение:] Значением атрибута для ссылки URI является название пространства имен, используемое для его идентифицикации. Чтобы название пространства имен могло служить указанной цели, оно должно обладать свойствами уникальности и постоянства. Не ставится задачи непосредственного получения по этому имени схемы отображения (если таковая существует). Примером синтаксиса, построенного с подобными целями, может служить синтаксис Uniform Resource Names [RFC2141]. Однако следует заметить, что и обычными адресами URL можно точно так же манипулировать для достижения тех же самых целей. [Определение:] Если название атрибута соответствует сценарию [Определение:] Если название атрибута соответствует сценарию Пример декларации, связывающей префикс
Ограничение для пространства имен: Начальный "XML" 3. Полные имена[Определение:]
В XML документах, отвечающих требованиям данной спецификации, часть имен (конструкций, соответствующих нетерминальному
Поле Заметим, что префикс используется только для хранения названия пространства имен. При построении имен, область действия которых выходит за пределы первоначального документа, приложения должны использовать название пространства имен, а не префикс. 4. Использование полных именВ XML документах, отвечающих требованиям данной спецификации, полные имена даются для следующих типов элементов:
Пример использования полного имени в качестве типа элемента:
Атрибут либо декларирует пространство имен, либо его название дается как полное имя:
Пример использования полного имени в качестве названия атрибута:
Ограничение пространства имен: Декларированный префикс Такое ограничение может привести к трудностям в работе, если атрибут, декларирующий пространство имен, не был представлен непосредственно в сущности документа XML, а был декларирован во внешней сущности как атрибут по умолчанию. Подобные декларации могут быть недоступны для программ, использующих непроверяющий XML процессор. Многие XML приложения, очевидно включая и те, которые зависят от пространства имен, не могут использовать проверяющий процессор. Для того, чтобы такие приложения работали корректно, декларации пространств имен должны даваться либо непосредственно, либо через атрибуты по умолчанию, объявленные во внутреннем наборе DTD. Если название элемента или тип атрибутов появляются в декларациях DTD, они могут быть представлены при этом в виде полного имени.
5. Пространство имен для элементов и атрибутов5.1 Область действия пространства именСчитается, что декларация пространства имен относится к тому
элементу, где она была указана, и всем элементам в содержимом этого
элемента (если она не была переопределена другой декларацией
пространства имен с таким же полем
Как показано в следующем примере, в атрибутах одного элемента может быть декларировано сразу несколько префиксов пространства имен:
5.2 Пространство имен по умолчаниюСчитается, задаваемое по умолчанию пространство имен относится к тому элементу, где оно декларировано (если этот элемент не имеет префикса пространства имен), а также ко всем элементам в содержимом этого элемента, не имеющим префикса. Если поле ссылки URI в декларации пространства имен по умолчанию оказалось пустым, считается, что все элементы без префиксов в области видимости этой декларации вообще не принадлежат ни одному пространству имен. Заметим, что пространства имен, задаваемые по умолчанию, непосредственно на атрибуты не распространяются.
Более развернутый пример, показывающий область действия пространства имен:
Пространство имен по умолчанию может быть задано пустой строкой. Это будет иметь тот же самый эффект, словно в пределах видимости этой декларации пространства имен, используемого по умолчанию, вообще не было декларировано.
5.3 Уникальность атрибутовВ документе XML, отвечающем требованиям данной спецификации, ни один тэг не может иметь два атрибута
Так, в следующем примере все начальные тэги
Однако в другом примере все тэги правильны (во втором случае потому, что пространство имен по умолчанию не относится к названиям атрибутов):
6. Согласованность документовВ XML документах, отвечающих требованиям данной спецификации,
названия атрибутов и типов элементов должны соответствовать сценарию Документ XML соответствует требованиям данной спецификации, если в
нем все те лексемы, которые, согласно требованиям XML, должны отвечать
сценарию Для документа согласованность дает следующее:
Строго говоря, значения атрибутов, декларируемые для типов ПриложенияA. Внутренняя структура пространства имен XML (обсуждение стандарта)A.1 Недостаток обычного пространства именВ компьютерных дисциплинах термин "пространство имен" обычно сопоставлется с набором имен, то есть, коллекцией, не содержащей дубликатов. Однако, если бы названия, используемые в разметке XML, привязывались к такому пространству имен, это сильно уменьшило бы их полезность. В основном такие названия используются в XML документах для того, чтобы программные модули, такие как процессоры запросов, управляемые стилями машины рендеринга и управляемые схемами программы проверки, могли распознавать логические структуры документа. Рассмотрим следующий пример:
В данном примере название Другая проблемная область происходит от использования "глобальных" атрибутов, что иллюстрируется следующим примером, в котором фрагмент XML документа необходимо вывести на экран с помощью стиля CSS:
В этом случае атрибут Язык XML 1.0 не имеет встроенного механизма декларирования "глобальных" атрибутов. Такие конструкции, как атрибут A.2 Разделы пространства имен XMLДля того, чтобы создание полных и неполных имен могло соответствовать своему назначению, каждое имя, появляющееся в пространстве имен XML, мы сопоставляем с одним из нескольких обычных непересекающихся (то есть, структурирующих) пространств, называемых разделами пространства имен. Перечень этих разделов:
В XML документах, отвечающих требованиям данной спецификации, названия всех полных (с префиксом) атрибутов относены к разделу глобальных атрибутов, тогда как названия всех неполных атрибутов помещаются в раздел соответствующего типа элемента. A.3 Расширенные типы элементов и названия атрибутовЧтобы было проще задавать правила и выполнять сравнение, для каждого типа элементов и названия атрибутов в XML документе мы определяем расширенный формат, описываемый здесь средствами синтаксиса элементов XML. [Определение:] Расширенный тип элемента представлен как пустой элемент XML типа [Определение:] Расширенное имя атрибута представлено как пустой элемент XML типа Небольшое изменение приведенных ранее примеров проиллюстрирует работу расширенных типов элементов и названий атрибутов. Ниже представлены два фрагмента, сопровождаемые таблицей, показывающей обработку имен:
Названия должны обрабатываться следующим образом:
A.4 Уникальность расширенных имен атрибутовОграничение, описанное ранее в главе "5.3 Уникальность атрибутов", может быть реализовано непосредственно в виде требования, что элементу не разрешается иметь два атрибута, расширенные имена которых эквивалентны, то есть имеют одинаковую пару атрибут-значение. B. Благодарности (обсуждение стандарта)Данный материал является результатом деятельности большого количества людей, особенно членов Рабочей Группы XML из консорциума World Wide Web, Special Interest Group и участников W3C Metadata Activity. Особенно был ценен вклад Чарльза Франксона (Charles Frankston) из компании Microsoft. C. Ссылки
|