Технология XSLT - страница 11
, скорее всего, будет обработана корректно.
Атрибут
В элементах можно использовать атрибуты с присвоенными им значениями. Атрибут задается в следующем виде:
>атрибут="значение"
Например, в записи гипертекстовой ссылки
><а href="http://www.xsltdev.ru">Заходите к нам!а>
элемент >а
имеет атрибут >href
, которому присвоено значение >"http://www.xsltdev.ru"
.
В языке XML атрибуты всегда должны иметь значения. Например, атрибут >selected
в записи элемента
>
> выбранный элемент
>
будет задан с точки зрения XML некорректно, поскольку ему не присвоено значение. Заметим, что в HTML такое определение является вполне нормальным. Такую ошибку легко исправить следующим образом:
>
> выбранный элемент
>
Значения атрибутов заключаются в кавычки — одинарные или двойные, например, в предыдущем случае можно написать:
>
> выбранный элемент
>
На практике часто бывает необходимым использовать в значениях атрибутов кавычки (например, для записи литералов). Следующий пример иллюстрирует, как это можно делать:
>
Атрибуту >login
присвоено значение >"scott"
(включая двойные кавычки), атрибуту >password
— значение >'tiger'
(включая одинарные кавычки).
В XML один элемент не может иметь атрибуты с одинаковыми именами.
Определение атрибута состоит из имени, за которым следует знак равенства, а затем, значение атрибута:
>[41] Attribute ::= Name Eq Attribute
>[25] Eq ::= S? '=' S?
>[10] AttValue ::= '"' ([^<&"] | Reference)* '"'
> | "'" ([^<&'] | Reference)* "'"
Значение атрибута записывается в одинарных или двойных кавычках, причем оно не может содержать символов '><
' и '>&
', которые используются в XML как управляющие символы (><
открывает тег элемента, а >&
— сущность). Вместе с тем, значение атрибута может содержать сущность (нетерминал >Reference
) — специальную конструкцию, о которой мы поговорим чуть позже.
Инструкция по обработке
В XML-документы могут быть включены не относящиеся к содержимому документа инструкции, несущие информацию для приложения, которое будет этот документ обрабатывать. Инструкции по обработке имеют вид:
>
Инструкция по обработке всегда заключается в угловые скобки со знаками вопроса. Первая часть инструкции, приложение, определяет программу или систему, которой предназначена вторая часть, ее содержимое.
Примером инструкции по обработке может послужить следующая запись:
>
В данном случае целевое приложение имеет имя '>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). Она имеет вид:
>версия" encoding="кодировка" standalone="yes | no"/>
Несмотря на то, что XML-декларация очень похожа на инструкцию по обработке, с точки зрения стандарта она таковой не является. Если же подходить менее строго, то смысл XML-декларации полностью соответствует смыслу инструкции по обработке: она сообщает обрабатывающему данный документ программному обеспечению информацию о некоторых свойствах этого документа. XML-декларация может содержать псевдоатрибуты>version
, >encoding
и >standalone
, которые мы рассмотрим ниже.
В отличие от элементов, XML-декларация, как и инструкции по обработке не могут иметь атрибутов. Однако их содержимое очень часто образуется в форме