Вход/Регистрация
Технология XSLT
вернуться

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

Шрифт:

□ атрибут

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 имя "значение">

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

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

Пример

В документе

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE advert [

 <!ENTITY animal "слон">

]>

<advert>

 <product title="&animal;">

Продается настоящий &animal;!

 </product>

</advert>

сущность

animal
имеет значение
"слон"
. Ссылка на сущность используется дважды — в атрибуте
title
и в тексте элемента
product
. Этот документ эквивалентен документу

<?xml version="1.0" encoding="UTF-8"?>

<advert>

 <product title="слон">

Продается настоящий слон!

 </product>

</advert>

Если в будущем фирма переквалифицируется, и будет продавать, скажем, жирафов, можно будет, не изменяя всего документа, заменить только значение сущности:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE advert [

  • Читать дальше
  • 1
  • ...
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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