Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Значение
определяет, как и какие значения должны быть присвоены атрибуту. Значением
может быть:
□ ключевое слово #REQUIRED
, которое показывает, что этот атрибут должен всегда присутствовать в элементе и иметь некоторое значение;
□ ключевое слово #IMPLIED
, которое показывает, что атрибут является необязательным и может отсутствовать в элементе;
□ ключевое слово #FIXED
, за которым следует значение, заключенное в кавычки — это задает атрибут, который всегда должен иметь одно и то же фиксированное значение;
□ значение, заключенное в кавычки, определяет значение атрибута по умолчанию.
Декларация
title CDATA #REQUIRED
id ID #IMPLIED
quantity CDATA "1"
value CDATA #FIXED "дорого"
color (серый|белый) "серый">
определяет в элементе product
следующие атрибуты:
□ обязательный атрибут title
, содержащий символьные данные;
□ необязательный атрибут id
, который может содержать уникальный идентификатор элемента внутри документа;
□ атрибут quantity
, который может и не присутствовать в документе — в этом случае его значение будет равно 1
;
□ атрибут value
, который всегда должен иметь значение "дорого"
;
□ атрибут color
, который может иметь одно из значений — "серый"
или "белый"
, по умолчанию "серый"
.
Разберем синтаксис определения списка атрибутов более детально. Этому определению соответствует следующее правило:
[52] AttlistDecl ::= ''
В этом правиле Name
задает имя элемента, a AttDef*
— набор определяемых атрибутов. Каждый атрибут задается правилом AttDef
:
[53] AttDef ::= S Name S AttType S DefaultDecl
Здесь Name
— имя, AttType
— тип, a DefaultDecl
— значение атрибута по умолчанию.
[54] AttType ::= StringType | TokenizedType | EnumeratedType
В соответствии со спецификацией, значения атрибутов бывают трех видов — строки ( StringType
), токены ( TokenizedType
) и тип перечисления ( EnumeratedType
).
[55] StringType ::= 'CDATA'
[56] TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY'
| 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS'
Тип перечисления ( EnumeratedType
) может задаваться нотациями ( NotationType
) и собственно перечислениями ( Enumeration
):
[57] EnumeratedType ::= NotationType | Enumeration
[58] NotationType ::= 'NOTATION' S
'(' S? Name (S? '|' S? Name)* S? ')'
Перечисление — это один или несколько именных токенов, которые разделены пробелами и знаками " |
". Перечисление задает несколько возможных вариантов значения атрибута, например (серый | белый)
.
[59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
Значение атрибута описывается продукцией DefaultDecl
следующим образом:
[60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED'
| (('#FIXED' S)? AttValue)
Определение сущности
Для того чтобы обеспечить достаточно выразительную мощность документов, XML позволяет разбивать их на отдельные поименованные объекты, называемые сущностями . Сущности в XML не имеют ничего общего с сущностями в методологии "сущность-связь". Самый близкий аналог в традиционных языках программирования — это макроподстановка.
Существует два способа определения сущности — внутреннее и внешнее.
Первый способ используется для того, чтобы определить именованный текстовый объект в самом документе, а затем использовать его содержимое посредством ссылки.
Внутреннее определение сущности имеет вид:
имя
" значение ">
Ссылка на сущность записывается как & имя ;
(амперсант, затем имя сущности, затем точка с запятой).
В документе
Продается настоящий &animal;!
сущность animal
имеет значение "слон"
. Ссылка на сущность используется дважды — в атрибуте title
и в тексте элемента product
. Этот документ эквивалентен документу
Продается настоящий слон!
Если в будущем фирма переквалифицируется, и будет продавать, скажем, жирафов, можно будет, не изменяя всего документа, заменить только значение сущности:
Продается настоящий &animal;!
Спецификация XML определяет несколько встроенных сущностей, которые перечислены в табл 1.1.
Таблица 1.1.Встроенные сущности XML
Имя сущности | Значение | Описание |
---|---|---|
lt |
< |
знак "меньше" |
gt |
> |
знак "больше" |
amp |
& |
амперсант |
apos |
' |
апостроф или одинарные кавычки |
quot |
" |
двойные кавычки |
Встроенные сущности могут быть использованы для замены некоторых символов там, где они могут быть восприняты, как разметка. В частности, символы <
(знак "меньше") и &
(амперсант) вообще не могут появляться в тексте документа иначе, кроме как в виде сущностей.
Продается серый слон весом > 5 тонн!
Компания "слон & Слон".
На самом же деле в элементе product
заключен текст
Продается серый слон весом > 5 тонн!
Компания "Слон & Слон".
Довольно часто бывает необходимо использовать в документе символы набора Unicode, обращаясь к ним по десятичным или шестнадцатеричным кодам. В таких случаях можно использовать символьные сущности.
Символьная сущность (или, как ее еще называют, символьная ссылка) записывается в виде код ;
или код;
, где код
— десятеричный и шестнадцатеричный Unicode-код символа в первом и втором случае соответственно.
Фраза " Миру-мир!
" может быть записана с использованием символьных сущностей следующим образом:
х41С;х438;х440;х443; - мир!
Первое слово, " Миру
" записано с использованием шестнадцатеричных unicode-кодов кириллицы, второе слово, " мир
", записано с использованием десятичных кодов.
Внешние сущности содержатся во внешних файлах. Если ссылка на внешнюю сущность появляется в документе, то на ее место копируется содержимое внешнего файла.
Определение внешней сущности имеет следующий синтаксис:
имя
SYSTEM " URI ">
В этом определении имя
точно так же, как и во внутренней сущности определяет имя сущности, в то время как URI
определяет абсолютное или относительное местоположение файла.
Предположим, что мы создали файл animal.ent
со следующим содержанием:
огромное серое животное
Для того чтобы использовать содержимое этого файла в документе, мы должны объявить внешнюю сущность следующим образом:
где ent/animal
есть относительный путь до файла animal.ent
. Если бы мы расположили файл на сервере, скажем, www.animalhost.com
, сущность могла бы быть объявлена как
Интервал:
Закладка: