Чтение онлайн

на главную - закладки

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

□ 

NOTATION
— нотация;

□ перечисление возможных значений атрибута.

Следует поподробнее остановиться на типе

ID
, поскольку атрибуты этого типа играют важную роль в повышении эффективности обработки XML-документов. Атрибуты типа
ID
могут содержать значения, которые однозначным образом идентифицируют элемент в документе. То есть, если тип атрибута объявлен как
ID
, его значение должно быть уникальным внутри документа. Это позволяет создавать для элементов с
ID
атрибутами индексы по значению атрибута, для более быстрого доступа. Например, в языке XPath, имеется функция
id
, которая по данному строковому параметру возвращает множество, состоящее из элемента,
ID
– атрибут которого совпадает с этим параметром. Естественно, тип
ID
не гарантирует, что доступ к элементам в любом случае будет производиться быстрее — это зависит от реализации обрабатывающих программ. Однако большинство современных XML-процессоров при работе с
ID
– атрибутами используют механизмы оптимизации.

Тип

ID
может быть полезен и при создании кросс-ссылок между элементами в самих XML-документах, для описания информации, структура которой выходит за рамки обычных деревьев. Уникальные значения, заданные в атрибуте
ID
могут использоваться в атрибутах типов
IDREF
(ссылка на идентифицирующее значение) и
IDREFS
(набор таких ссылок).

Значение
определяет, как и какие значения должны быть присвоены атрибуту.
Значением
может быть:

□ ключевое слово

#REQUIRED
, которое показывает, что этот атрибут должен всегда присутствовать в элементе и иметь некоторое значение;

□ ключевое слово

#IMPLIED
, которое показывает, что атрибут является необязательным и может отсутствовать в элементе;

□ ключевое слово

#FIXED
, за которым следует значение, заключенное в кавычки — это задает атрибут, который всегда должен иметь одно и то же фиксированное значение;

□ значение, заключенное в кавычки, определяет значение атрибута по умолчанию.

Примеры

Декларация

<!ATTLIST product

 title CDATA #REQUIRED

 id ID #IMPLIED

 quantity CDATA "1"

 value CDATA #FIXED "дорого"

 color (серый|белый) "серый">

определяет в элементе

product
следующие атрибуты:

□ обязательный атрибут

title
, содержащий символьные данные;

□ необязательный атрибут

id
, который может содержать уникальный идентификатор элемента внутри документа;

□ атрибут

quantity
, который может и не присутствовать в документе — в этом случае его значение будет равно
1
;

□ атрибут

value
, который всегда должен иметь значение
"дорого"
;

□ атрибут

color
, который может иметь одно из значений —
"серый"
или
"белый"
, по умолчанию
"серый"
.

Разберем синтаксис определения списка атрибутов более детально. Этому определению соответствует следующее правило:

[52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'

В этом правиле

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 не имеют ничего общего с сущностями в методологии "сущность-связь". Самый близкий аналог в традиционных языках программирования — это макроподстановка.

Существует два способа определения сущности — внутреннее и внешнее.

Первый способ используется для того, чтобы определить именованный текстовый объект в самом документе, а затем использовать его содержимое посредством ссылки.

Внутреннее определение сущности имеет вид:

<!ENTITY имя "значение">

Ссылка на сущность записывается как

&имя;
(амперсант, затем имя сущности, затем точка с запятой).

Поделиться:
Популярные книги

Запечатанный во тьме. Том 1. Тысячи лет кача

NikL
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача

Надуй щеки! Том 2

Вишневский Сергей Викторович
2. Чеболь за партой
Фантастика:
попаданцы
дорама
фантастика: прочее
5.00
рейтинг книги
Надуй щеки! Том 2

Бракованная невеста. Академия драконов

Милославская Анастасия
Фантастика:
фэнтези
сказочная фантастика
5.00
рейтинг книги
Бракованная невеста. Академия драконов

Мастер 7

Чащин Валерий
7. Мастер
Фантастика:
фэнтези
боевая фантастика
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Мастер 7

Солнечный флот

Вайс Александр
4. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Солнечный флот

Наследие Маозари 7

Панежин Евгений
7. Наследие Маозари
Фантастика:
боевая фантастика
юмористическое фэнтези
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 7

Кодекс Крови. Книга ХVII

Борзых М.
17. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVII

Сирийский рубеж 2

Дорин Михаил
6. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж 2

Потомок бога

Решетов Евгений Валерьевич
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Потомок бога

Идеальный мир для Демонолога 3

Сапфир Олег
3. Демонолог
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Демонолога 3

Звездная Кровь. Экзарх III

Рокотов Алексей
3. Экзарх
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Экзарх III

Идеальный мир для Демонолога 11

Сапфир Олег
11. Демонолог
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Демонолога 11

Идеальный мир для Лекаря 20

Сапфир Олег
20. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 20

Развод в 45. От любви до ненависти

Гофман Крис
6. Развод
Любовные романы:
остросюжетные любовные романы
5.40
рейтинг книги
Развод в 45. От любви до ненависти