Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Очень важно понять, что XML-документ логически организован в виде дерева. Дерево является довольно простой структурой для обработки, но при этом выразительная сложность его весьма велика. Древовидная структура является одной из наиболее подходящих абстракций для описания объектов и отношений в реальном мире — возможно именно древовидное устройство наряду с простотой использования обеспечили XML такой потрясающий успех.
Обратимся теперь к синтаксису элементов. EBNF-правило, определяющее элемент, выглядит следующим образом:
[39] element ::= EmptyElemTag
| STag content ETag
Пустому элементу соответствует нетерминал EmptyElemTag
. Непустой элемент начинается открывающим тегом (нетерминал STag
), включает некоторое содержимое ( content
) и заканчивается закрывающим тегом ( ETag
).
Открывающий тег состоит из имени ( Name
) и последовательности определений атрибутов ( Attribute
), которые разделены пробельными символами:
[40] STag ::= '<' Name (S Attribute)* S? '>'
В ряде случаев атрибуты тега могут отсутствовать.
Перед закрывающей угловой скобкой тега могут также стоять пробельные символы, поэтому вполне корректной будет следующая запись:
<���а
href="http://www.xsltdev.ru"
>
В закрывающем теге имени предшествует косая черта (" /
") и перед закрывающей угловой скобкой тоже могут стоять пробелы:
[42] ETag ::= '</' Name S? '>'
Имена в открывающем и закрывающем тегах должны совпадать.
Содержимое элемента может состоять из элементов (нетерминал element
), сущностей ( Reference
), секций символьных данных ( CDSect
), инструкций по обработке ( PI
) и комментариев ( Comment
), перемешанных с символьными данными ( CharData
):
[43] content ::= CharData?
((element
| Reference
| CDSect
| PI
| Comment) CharData?)*
Пустой элемент не имеет содержимого и задается продукцией EmptyElemTag
в следующем виде:
[44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
Тег пустого элемента выглядит точно так же, как и тег непустого элемента с той лишь разницей, что перед закрывающей угловой скобкой стоит символ косой черты (" /
"). В этом, кстати, одно из главных отличий синтаксиса языка XML от HTML. Например, вместо
в XML следует писать
.
Для того чтобы привести синтаксис HTML в соответствие со стандартом XML, был создан язык XHTML. Этот язык полностью соответствует синтаксису XML, что делает возможным обработку XHTML-документов XML-средствами, но при этом набор тегов XHTML идентичен набору тегов языка HTML. К сожалению, далеко не все браузеры поддерживают XHTML. Чаще всего проблемы возникают именно с пустыми элементами (или одиночными тегами в терминах HTML): например, браузеры могут некорректно воспринимать запись вида
. В большинстве случаев проблема решается использованием перед косой чертой пробела: запись вида
, скорее всего, будет обработана корректно.
Атрибут
В элементах можно использовать атрибуты с присвоенными им значениями. Атрибут задается в следующем виде:
атрибут =" значение "
Например, в записи гипертекстовой ссылки
<���а 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 ::= ' ' Char*))
[21] CDEnd ::= ']]>'
Содержимое секции символьных данных, отвечающее продукции CData, может состоять из любых символов, в том числе " <
" и " &
", которые не будут восприниматься как разметка. Единственное, чего секции CDATA не могут включать — это последовательность " ]]>
", которая завершает символьную секцию.
Комментарии (comments)
XML-документ может содержать комментарии, которые записываются следующим образом:
Текст комментария может состоять из любых символов, кроме двух минусов
подряд (" --
"). Кроме этого, комментарий не должен заканчиваться символом " -
" .
Пример комментария:
...
...
Продукция комментария называется в XML Comment
и имеет следующий вид:
[15] Comment ::= ''
Выражение ((Char - '-') | ('-' (Char - '-')))*
означает, что содержимое комментария не должно оканчиваться на знак " -
" или содержать два таких знака последовательно.
Интервал:
Закладка: