Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_XML.doc
Скачиваний:
16
Добавлен:
03.05.2019
Размер:
3.94 Mб
Скачать

3.3. Добавление dtd

Объявление типа документа представляет собой блок XML-разметки, который нужно добавить в пролог валидного XML-документа. Он может располагаться в любом месте пролога - вне другой разметки - после XML-объявления, как показано на следующем рисунке.

Рисунок 10. Размещение DTD в XML-документе

Объявление типа документа определяет структуру документа. При открытии документа, не содержащего объявления типа, в браузере, XML-процессор всего лишь осуществляет проверку документа на корректность формы составления. В противном случае при наличии объявления типа документа, процессор будет проверять документ на валидность вместе с проверкой на корректность формы составления, так что созданный документ должен отвечать всем имеющимся декларациям в объявлении типа документа. Таким образом, нельзя будет включить в документ какие-либо элементы или атрибуты, если они не объявлены в объявлении типа документа. Каждый используемый элемент и атрибут должен соответствовать спецификации (например, допустимости применения данного содержимого элемента или типа атрибута), выраженной в соответствующем объявлении.

XML-процессор проверяет документ на валидность только в том случае, если документ открывается через HTML Web-страницу. При открытии XML-документа непосредственно в браузере, процессор будет проверять документ (включая любое объявление типа документа, которое он содержит) на корректность формы составления, но не будет проверять документ на валидность, даже если он содержит объявление типа документа.

3.4. Форма записи dtd

Объявление типа документа имеет следующую обобщенную форму записи:

<!DOCTYPE Имя DTD>

Здесь “Имя” указывает на имя элемента Документ. Имя действительного элемента Документ должно в точности соответствовать имени, записанному в объявлении. (Правила, в соответствии с которыми следует выбирать имена элементов, приведены в разделе «Анатомия элемента».) Например, при объявлении типа документа для документа, рассмотренного в предыдущем разделе, следует использовать имя INVENTORY:

<!DOCTYPE INVENTORY DTD>

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

DTD состоит из символа левой квадратной скобки ([), после которой следует ряд объявлений разметки, заканчивающихся правой квадратной скобкой (]). Объявления разметки описывают логическую структуру документа, т.е. задают элементы документа, атрибуты и другие компоненты. На следующем рисунке приведен законченный валидный XML-документ, содержащий DTD с единственным объявлением разметки, которое определяет один тип элемента в документе, SIMPLE.

DTD в этом примере документа указывает, что документ может содержать только элементы типа SIMPLE (это единственный заданный тип элемента), и что элемент SIMPLE может иметь любое допустимое для данного типа содержимое (ключевое слово ANY).

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

  • Объявления типов элементов. Они определяют типы элементов, которые может содержать документ, а также содержимое и порядок следования элементов.

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

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

  • Объявления нотаций. Нотация описывает формат данных или идентифицирует программу, используемую для обработки определенного формата.

  • Инструкции по обработке. Эта тема затрагивалась выше.

  • Комментарии. Эта тема также затрагивалась выше.

  • Ссылки на параметрические примитивы. Любой из приведенных выше компонентов может содержаться внутри параметрического примитива и добавляться путем ссылки на параметрический примитив.

Типы DTD, обсуждаемые в этом разделе (и используемые в примерах в последующих разделах), относятся к внутреннему подмножеству DTD, поскольку полностью включаются в объявление типа данного документа. Затем будет рассказано о том, как использовать DTD, размещенные в отдельном файле, и относящиеся к внешнему подмножеству DTD.