Технология 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 ::= '

>            (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-декларация, как и инструкции по обработке не могут иметь атрибутов. Однако их содержимое очень часто образуется в форме