Технология XSLT (Валиков) - страница 25

Программа, обрабатывающая документ с таким заголовком, сможет по публичному идентификатору понять, что документ создан на языке XHTML, а значит, обрабатывать его нужно в соответствии со стандартом этого языка. Если же обрабатывающая программа не в курсе определений XHTML, она сможет загрузить декларацию типа по адресу http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd. Публичные идентификаторы, как правило, используются в языках, получающих широкое распространение, поскольку в этом случае формат логической структуры будет известен и без загрузки DTD.

Выражение >('[' (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.

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

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

>

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

Примером имени элемента может быть ">A", ">B:12", ">MyEasyName", ">doc.xml".

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

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

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

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