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

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

Шрифт:

Выражение

('[' (markupdecl | DeclSep) * ']' S?) ?
в продукции
doctypedecl
означает, что в декларации типа документа в квадратных скобках может содержаться последовательность нетерминалов
markupdecl
и
DeclSep
.

Первый из этих нетерминалов,

markupdecl
, показывает, определения какого вида содержатся в DTD:

[29] markupdecl ::= elementdecl

| AttlistDecl

| EntityDecl

| NotationDecl

| PI

| Comment

С правилами

PI
и
Comment
мы уже знакомы — в данной продукции они показывают, что в DTD также можно использовать инструкции по обработке и комментарии.

Нетерминалы

elementdecl
,
AttlistDecl
,
EntityDecl
и
NotationDecl
соответствуют определениям элемента, списка атрибутов, сущности и нотации. Они будут подробно разобраны в следующих четырех разделах.

Нетерминал

DeclSep
соответствует разделителю объявлений, которые перечисляются в DTD. Этот разделитель может быть либо пробельным пространством, либо параметризованной сущностью:

[28а] DeclSep ::= PEReference | S

В случае, если определения в DTD разделяются сущностью-параметром, ее содержимое интерпретируется как обычные определения вида

markupdecl
.

Определение элемента

Определение элемента задает имя и тип содержимого элемента в следующем виде:

<!ELEMENT имя содержимое>

Имя элемента должно начинаться с буквы, подчеркивания ("

_
") или двоеточия ("
:
") и содержать буквы, цифры, некоторые знаки пунктуации (такие, как "
_
" — подчеркивание, "
:
" — двоеточие, "
.
" — точка, "
–
" — тире или знак минуса) и модифицирующие символы (см. разд. "Базовые продукции ХМL" данной главы).

Примером имени элемента может быть "

A
", "
B:12
", "
MyEasyName
", "
doc.xml
".

В качестве содержимого элемента может быть указано:

□ 

EMPTY
, в случае, когда элемент обязан быть пустым;

□ 

ANY
, в случае, когда элемент может содержать что угодно;

□ формальное правило, определяющее элементы, и данные, которые может содержать элемент, а также порядок их следования.

Первые два случая определения элемента довольно просты. Их использование может быть продемонстрировано на следующем примере:

Декларация

<!DOCTYPE advert [

<!ELEMENT advert ANY>

<!ELEMENT product ANY>

<!ELEMENT classified EMPTY>

]>

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

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

Приведем пример документа, построенного в соответствии с этой декларацией.

Листинг 1.3. Документ с декларацией типа

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

<!DOCTYPE advert [

<!ELEMENT advert ANY>

<!ELEMENT product ANY>

<!ELEMENT classified EMPTY>

]>

<advert>

 <product>

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

 </product>

 <classified/>

</advert>

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

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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