В первой версии XML для определения логической структуры документов использовался набор формальных правил, называемый DTD — декларацией типа документа (document type declaration). Помимо этого, в начале мая 2001 года была принята новая техническая рекомендация языка под названием XML-схема (XML Schema), которая также формально задает логическую структуру документа, определяет используемые типы данных, количество повторений и многое другое.
В этой главе мы разберем основы логического построения ХМL-документов с использованием DTD.
Декларация типа документа (DTD)
Декларация типа документа состоит из одного или нескольких правил-ограничений структуры документа. В частности, DTD позволяет задавать следующие правила:
□ >ELEMENT
— определение элемента;
□ >ATTLIST
— определение списка атрибутов элемента;
□ >ENTITY
— определение сущности;
□ >NOTATION
— определение нотации.
Эти определения могут быть заданы с использованием конструкции >DOCTYPE
непосредственно в документе:
>
>
>
>и т.д.
>]>
Другой возможностью определения декларации документа является использование внешнего файла:
>
В этом случае можно также дополнять внешние определения внутренними:
>
>
>
>и т.д.
>]>
Декларация типа документа определяется следующей EBNF-продукцией:
>[28] doctypedecl ::= '
> ('[' (markupdecl | DeclSep)* ']' S?)? '>'
Имя, соответствующее продукции >Name
, которая идет следом за ключевым словом >DOCTYPE
, определяет имя корневого элемента ХМL-документа. В предыдущем примере в корне документа должен стоять элемент >advert
.
Выражение >(S ExternalID) ?
указывает на то, что декларация типа документа может указываться во внешнем источнике (например, в файле), который описывается внешним идентификатором >ExternalID
.
>[75] ExternalID ::= 'SYSTEM' S SystemLiteral
> | 'PUBLIC' S PubidLiteral S SystemLiteral
В случае системного идентификатора (>"SYSTEM"
), >SystemLiteral
определяет URI определения типа документа. В случае публичного идентификатора, к этому параметру добавляется >PubidLiteral
, сообщающий дополнительную информацию о ресурсе. Обрабатывающее программное обеспечение может включать в себя DTD для заданного публичного идентификатора. Например, документы, написанные на языке XHTML, должны начинаться следующим объявлением:
>
> "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">