Атрибут
В элементах можно использовать атрибуты с присвоенными им значениями. Атрибут задается в следующем виде:
Например, в записи гипертекстовой ссылки
<а href='http://www.xsltdev.ru'>Заходите к нам!</а>
элемент а
имеет атрибут href
, которому присвоено значение 'http://www.xsltdev.ru'
.
В языке XML атрибуты всегда должны иметь значения. Например, атрибут selected
в записи элемента
<option selected>
</option>
будет задан с точки зрения XML некорректно, поскольку ему не присвоено значение. Заметим, что в HTML такое определение является вполне нормальным. Такую ошибку легко исправить следующим образом:
<option selected='selected'>
</option>
Значения атрибутов заключаются в кавычки — одинарные или двойные, например, в предыдущем случае можно написать:
<option selected='selected'>
</option>
На практике часто бывает необходимым использовать в значениях атрибутов кавычки (например, для записи литералов). Следующий пример иллюстрирует, как это можно делать:
<auth login=''scott'' password=''tiger''/>
Атрибуту login
присвоено значение 'scott'
(включая двойные кавычки), атрибуту password
— значение 'tiger'
(включая одинарные кавычки).
В XML один элемент не может иметь атрибуты с одинаковыми именами.
Определение атрибута состоит из имени, за которым следует знак равенства, а затем, значение атрибута:
[41] Attribute ::= Name Eq Attribute
[25] Eq ::= S? '=' S?
[10] AttValue ::= ''' ([^<&'] | Reference)* '''
| ''' ([^<&'] | Reference)* '''
Значение атрибута записывается в одинарных или двойных кавычках, причем оно не может содержать символов '<
' и '&
', которые используются в XML как управляющие символы (<
открывает тег элемента, а &
— сущность). Вместе с тем, значение атрибута может содержать сущность (нетерминал Reference
) — специальную конструкцию, о которой мы поговорим чуть позже.
Инструкция по обработке
В XML-документы могут быть включены не относящиеся к содержимому документа инструкции, несущие информацию для приложения, которое будет этот документ обрабатывать. Инструкции по обработке имеют вид:
<?приложение содержимое?>
Инструкция по обработке всегда заключается в угловые скобки со знаками вопроса. Первая часть инструкции,
Примером инструкции по обработке может послужить следующая запись:
<?serv cache-document?>
В данном случае целевое приложение имеет имя 'serv
', а сама инструкция может быть интерпретирована как указание серверу на то, что документ нужно сохранить в кэше. Естественно, инструкции по обработке имеют смысл только для тех приложений, которым они адресуются.
Продукции инструкций по обработке имеют следующий вид:
[16] PI ::= '<?' PITarget
(S (Char* - (Char* '?>' Char*)))? '?>'
В этом правиле выражение (S (Char* - (Char* '?>' Char*)))?
означает, что приложение и содержимое инструкции по обработке разделены пробельными символами, причем содержимое состоит из любых символов, кроме последовательности '?>'
, которая обозначает конец инструкции.
Целевое приложение может иметь любое имя (кроме 'xml
' в любом регистре символов). Имя целевого приложения определяется EBNF-правилом PITarget
:
[17] PITarget ::= Name - (('X' | 'х') ('М' | 'm') ('L' | 'l'))
В XML определена особая конструкция, называемая ХМL-декларацией (XML declaration). Она имеет вид:
<?xml version='
Несмотря на то, что XML-декларация очень похожа на инструкцию по обработке, с точки зрения стандарта она таковой не является. Если же подходить менее строго, то смысл XML-декларации полностью соответствует смыслу инструкции по обработке: она сообщает обрабатывающему данный документ программному обеспечению информацию о некоторых свойствах этого документа. XML-декларация может содержать version
, encoding
и standalone
, которые мы рассмотрим ниже.
В отличие от элементов, XML-декларация, как и инструкции по обработке не могут иметь атрибутов. Однако их содержимое очень часто образуется в форме
— такие объявления и называются псевдоатрибутами.
Псевдоатрибут version
содержит информацию о версии XML, в соответствии с которой был создан этот документ. Текущей версией языка XML является 1.0, поэтому в большинстве случаев указывается version='1.0'
.
<?xml version='1.0'?>
Псевдоатрибут encoding
сообщает, в какой кодировке создан данный документ. По умолчанию выбрана Unicode-кодировка UTF-8 (подробнее см. 'Использование Unicode'), но точно так же может быть использована и любая другая кодировка, лишь бы только ее поддерживало программное обеспечение, обрабатывающее документ.