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

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

Шрифт:

Количество, с которым элемент может появляться в этой последовательности, формально записывается с использованием символов-модификаторов "

*
", "
?
", "
+
", которые имеют следующие значения:

□ 

а?
— означает, что элемент
а
может быть пропущен в последовательности;

□ 

а
— означает, что элемент
а
должен присутствовать в последовательности на этом месте ровно один раз;

□ 

а*
— задает последовательность из нуля или более элементов
а
;

□ 

a+
— задает последовательность из одного или более элементов
а
.

Кроме того, содержимое может моделироваться как перечисление и выбор элементов.

Элементы перечисляются через запятую в круглых скобках, например

(a, b, c)
— это последовательность, состоящая из элементов
a
,
b
,
c
. Такая запись означает, что первым должен идти элемент
a
, затем сразу же за ним элемент
b
и элемент
c
.

Выбор элемента задается аналогично перечислению, только разделительным символом является не запятая, а знак '

|
'. Например, (
a | b | c
) задает выбор одного из трех элементов
a
,
b
или
c
.

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

Пример

(a* | b? | с | d+)

определяет содержимое, как последовательность, состоящую из нуля или более элементов

a
или одного элемента
b
, который может быть пропущен, или ровно одного элемента
с
, или последовательностью, состоящей из одного или более элементов
d
.

Помимо этого, формальные правила могут использовать при записи другие формальные правила.

Пример

((a | b), (с | d))

задает содержимое, первым элементом которого является

a
или
b
, вторым — элемент
с
или
d
.

Содержимое элементов может также включать символьные данные, которые обозначаются при помощи ключевого слова

#PCDATA
(parsable character data — разбираемые символьные данные).

Пример

<!ELEMENT product (#PCDATA)>

означает, что элемент

product
должен содержать только символьные данные.

Помимо текста элементы могут также включать в себя другие элементы. Содержимое такого типа называется смешанным. Формальные правила смешанного содержимого должны всегда иметь вид

(#PCDATA | ... | ... ) *
.

При помощи формальных правил можно точно и гибко задавать логическую структуру элементов документа. В качестве примера приведем определения элементов для нашего документа с рекламным объявлением.

Пример

Предположим, мы хотим определить документ со следующей логической структурой:

□ корневым элементом документа является элемент

advert
;

□ элемент

advert
содержит последовательность, состоящую из нескольких элементов product и одного элемента
classified
, который может быть пропущен;

□ элемент

product
может содержать текст и другие элементы
product
в любом порядке;

□ элемент

classified
не имеет содержимого.

Документ соответствующей логической структуры может быть задан следующим образом.

Листинг 1.4

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

<!DOCTYPE advert [

<!ELEMENT advert (product+, classified*)>

<!ELEMENT product (#PCDATA | product)*>

<!ELEMENT classified EMPTY>

]>

<advert>

 <product>

Покупайте наших слонов!

 </product>

 <classified/>

</advert>

Определению элемента соответствует EBNF-продукция

elementdecl
:

[45] elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'

Нетерминал

contentspec
, следующий через пробельное пространство за именем элемента, определяет тип содержимого, которое может иметь этот элемент:

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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