Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Приведем пример документа, построенного в соответствии с этой декларацией.
Покупайте наших слонов!
В третьем случае содержимое элемента определяется при помощи формальных правил, которые очень похожи на те, которые используются в расширенных формах Бэкуса-Наура. Подобно тому, как в EBNF формальные правила используются для того, чтобы стандартизировать последовательность символов, составляющую конструкции некоторого языка, в определениях элементов они используются для описания содержимого элемента — последовательности из символьных данных и дочерних элементов.
Количество, с которым элемент может появляться в этой последовательности, формально записывается с использованием символов-модификаторов " *
", " ?
", " +
", которые имеют следующие значения:
□ а?
— означает, что элемент а
может быть пропущен в последовательности;
□ а
— означает, что элемент а
должен присутствовать в последовательности на этом месте ровно один раз;
□ а*
— задает последовательность из нуля или более элементов а
;
□ a+
— задает последовательность из одного или более элементов а
.
Кроме того, содержимое может моделироваться как перечисление и выбор элементов.
Элементы перечисляются через запятую в круглых скобках, например (a, b, c)
— это последовательность, состоящая из элементов a
, b
, c
. Такая запись означает, что первым должен идти элемент a
, затем сразу же за ним элемент b
и элемент c
.
Выбор элемента задается аналогично перечислению, только разделительным символом является не запятая, а знак ' |
'. Например, ( a | b | c
) задает выбор одного из трех элементов a
, b
или c
.
При записи выбора и перечисления элементы могут также указываться с использованием модификаторов количества.
(a* | b? | с | d+)
определяет содержимое, как последовательность, состоящую из нуля или более элементов a
или одного элемента b
, который может быть пропущен, или ровно одного элемента с
, или последовательностью, состоящей из одного или более элементов d
.
Помимо этого, формальные правила могут использовать при записи другие формальные правила.
((a | b), (с | d))
задает содержимое, первым элементом которого является a
или b
, вторым — элемент с
или d
.
Содержимое элементов может также включать символьные данные, которые обозначаются при помощи ключевого слова #PCDATA
(parsable character data — разбираемые символьные данные).
означает, что элемент product
должен содержать только символьные данные.
Помимо текста элементы могут также включать в себя другие элементы. Содержимое такого типа называется смешанным . Формальные правила смешанного содержимого должны всегда иметь вид (#PCDATA | ... | ... ) *
.
При помощи формальных правил можно точно и гибко задавать логическую структуру элементов документа. В качестве примера приведем определения элементов для нашего документа с рекламным объявлением.
Предположим, мы хотим определить документ со следующей логической структурой:
□ корневым элементом документа является элемент advert
;
□ элемент advert
содержит последовательность, состоящую из нескольких элементов product и одного элемента classified
, который может быть пропущен;
□ элемент product
может содержать текст и другие элементы product
в любом порядке;
□ элемент classified
не имеет содержимого.
Документ соответствующей логической структуры может быть задан следующим образом.
Покупайте наших слонов!
Определению элемента соответствует EBNF-продукция elementdecl
:
[45] elementdecl ::= ''
Нетерминал contentspec
, следующий через пробельное пространство за именем элемента, определяет тип содержимого, которое может иметь этот элемент:
[46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children
Строка " EMPTY
" соответствует пустому элементу, " ANY
" — любому содержимому, нетерминал Mixed
— смешанному содержимому, children
— содержимому, которое определяется формальными правилами.
[47] children ::= (choice | seq) ('?' | '*' | '+')?
[48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
[49] choice ::= '(' S? cp ( S? '|' S? cp )+ S? ')'
[50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
[51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'
| '(' S? '#PCDATA' S? ')'
Определение списка атрибутов
Список атрибутов некоторого элемента задается следующим образом:
элемент
атрибут1 тип1 значение1
атрибут2 тип2 значение2
и т. д ...>
В этом определении элемент
задает имя элемента, для которого определяется данный список атрибутов, атрибут
— имя атрибута, тип
— тип атрибута и значение
— значение атрибута.
Имя
атрибута отвечает в XML тем же самым требованиям, что и имя элемента — оно должно начинаться с буквы и может содержать другие буквы, цифры и некоторые знаки препинания.
Тип
атрибута может быть одним из следующих:
□ CDATA
— символьные данные;
□ ID
— уникальный идентификатор;
□ IDREF
— ссылка на уникальный идентификатор;
□ IDREFS
— набор ссылок;
□ ENTITY
— сущность;
□ ENTITIES
— набор сущностей;
□ NMTOKEN
— именной токен;
□ NMTOKENS
— набор именных токенов;
□ NOTATION
— нотация;
□ перечисление возможных значений атрибута.
Следует поподробнее остановиться на типе ID
, поскольку атрибуты этого типа играют важную роль в повышении эффективности обработки XML-документов. Атрибуты типа ID
могут содержать значения, которые однозначным образом идентифицируют элемент в документе. То есть, если тип атрибута объявлен как ID
, его значение должно быть уникальным внутри документа. Это позволяет создавать для элементов с ID
-атрибутами индексы по значению атрибута, для более быстрого доступа. Например, в языке XPath, имеется функция id
, которая по данному строковому параметру возвращает множество, состоящее из элемента, ID
-атрибут которого совпадает с этим параметром. Естественно, тип ID
не гарантирует, что доступ к элементам в любом случае будет производиться быстрее — это зависит от реализации обрабатывающих программ. Однако большинство современных XML-процессоров при работе с ID
-атрибутами используют механизмы оптимизации.
Тип ID
может быть полезен и при создании кросс-ссылок между элементами в самих XML-документах, для описания информации, структура которой выходит за рамки обычных деревьев. Уникальные значения, заданные в атрибуте ID
могут использоваться в атрибутах типов IDREF
(ссылка на идентифицирующее значение) и IDREFS
(набор таких ссылок).
Интервал:
Закладка: