QName
QName XML или уточненное имя — это полное имя элемента, атрибута или идентификатора в - документе. QName кратко связывает URI пространства имен XML с локальным именем элемента, атрибута или идентификатора в этом пространстве имен. [1] Чтобы создать эту ассоциацию, QName присваивает локальному имени префикс , соответствующий его пространству имен. В целом, QName включает в себя URI пространства имен XML, префикс и локальное имя .
Консорциум World Wide Web представил соглашение QName в спецификации 1999 года «Пространства имен в XML». [1] [2]
Цель
[ редактировать ]Поскольку ссылки URI могут быть длинными и могут содержать запрещенные символы для именования элементов/атрибутов, QNames используются для создания сопоставления между URI и префиксом пространства имен. Сопоставление позволяет сокращать URI, что обеспечивает более удобный способ написания XML-документов (см. пример ниже).
Формальное определение
[ редактировать ]QNames формально определены W3C как: [3]
QName ::= PrefixedName | UnprefixedName
PrefixedName ::= Prefix ':' LocalPart
UnprefixedName ::= LocalPart
Prefix ::= NCName
LocalPart ::= NCName
NCName определяется следующим образом:
NCName ::= Name - (Char* ':' Char*) (* An XML Name, minus the ":" *)
Name ::= NameStartChar (NameChar)*
NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6]
| [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF]
| [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF]
| [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD]
| [#x10000-#xEFFFF]
NameChar ::= NameStartChar | "-" | "." | [0-9]
| #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
Char ::= (* any Unicode char, excluding surrogate blocks FFFE and FFFF. *)
#x9 | #xA | #xD | [#x20-#xD7FF]
| [#xE000-#xFFFD] | [#x10000-#x10FFFF]
При этом префикс используется в качестве заполнителя для пространства имен, а LocalPart — в качестве локальной части полного имени. Локальная часть может быть именем атрибута или именем элемента.
Пример
[ редактировать ]<?xml version="1.0"?>
<doc xmlns:x="https://example.com/ns/foo">
<x:p/>
</doc>
Во второй строке объявляется, что префикс «x» связан с URI «http://example.com/ns/foo». Этот префикс в дальнейшем можно использовать как сокращение для этого пространства имен. Впоследствии тег «x:p» является допустимым QName, поскольку он использует «x» в качестве ссылки на пространство имен и «p» в качестве локальной части. Тег «doc» также является допустимым QName, но состоит только из локальной части. [4]
См. также
[ редактировать ]- КЮРИ : компактный URI.
- Полное имя
Ссылки
[ редактировать ]- ^ Jump up to: а б Уолш, Норман, изд. (17 марта 2004 г.). «Использование полных имен (QNames) в качестве идентификаторов в XML-контенте» . W3.org . Консорциум Всемирной паутины . Проверено 12 июня 2018 г.
- ^ Брей, Тим; Холландер, Дэйв; Лэйман, Эндрю, ред. (14 января 1999 г.), «Пространства имен в XML» , W3.org , Консорциум World Wide Web , получено 12 июня 2018 г.
- ^ Пространства имен в XML 1.0 (второе издание)
- ^ Пространства имен в XML 1.0 (второе издание)