Технология XSLT - [15]

Шрифт
Интервал

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

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

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

□ ключевое слово >#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;!


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


Тотальное превосходство

Художник? любовник? убийца? адепт тайного знания?.. Герой романа знает о себе только одно, он должен добиться тотального превосходства во всем…Интеллектуальный триллер, колеблющийся между «Американской мечтой» Нормана Мейлера и «Шатунами» Юрия Мамлеева.Новый блестящий талант в «Мастер серии».


Наркокурьер Лариосик

Кинематографическая природа остросюжетной прозы Григория Ряжского очевидна — как несомненны и ее чисто литературные достоинства. Мир страшен и кровав — и страшнее всего, пожалуй, в заглавной повести «Наркокурьер Лариосик», — но и не восхититься его красотой нельзя.В литературу — с парадного подъезда престижной серии — входит зрелый мастер.


Месторождение ветра

Проза Марины Палей не поддается расчленению на внутреннее и внешнее, на сюжет и стиль. Суверенный мир, созданный этим писателем, существует благодаря виртуозному стилю и обусловлен разнообразием интонации. Огромный дар свободы не может ограничить себя одним героем, одной темой или одной страной.


Приемы создания интерьеров различных стилей

Книга по созданию трехмерных проектов интерьеров при помощи популярного редактора трехмерной графики 3ds Max позволит каждому, кто хочет заняться моделированием 3D-интерьеров, найти необходимую информацию для воплощения идеи в жизнь. Описывается моделирование элементов и стили оформления интерьеров, работа с материалами и текстурами, способы повышения реалистичности изображений, визуализация. Рассматриваются особенности создания интерьеров в различных стилях: минимализм, ренессанс, барокко, античный, рококо, хай-тек, техно и др.