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

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

Жанры

Технология 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 имя "значение">

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

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

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

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Предатель. Цена ошибки

Кучер Ая
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Предатель. Цена ошибки

Мужчина моей судьбы

Ардова Алиса
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
Мужчина моей судьбы

На границе империй. Том 8. Часть 2

INDIGO
13. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8. Часть 2

Отверженный VII: Долг

Опсокополос Алексис
7. Отверженный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Отверженный VII: Долг

Темный Лекарь 4

Токсик Саша
4. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 4

Девочка для Генерала. Книга первая

Кистяева Марина
1. Любовь сильных мира сего
Любовные романы:
остросюжетные любовные романы
эро литература
4.67
рейтинг книги
Девочка для Генерала. Книга первая

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

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

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Вечный. Книга V

Рокотов Алексей
5. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга V

Бестужев. Служба Государевой Безопасности. Книга 5

Измайлов Сергей
5. Граф Бестужев
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга 5

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Генерал Скала и ученица

Суббота Светлана
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Генерал Скала и ученица

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги