Что означает сокращение dtd
Что означает сокращение dtd
DTD (англ. Document Type Definition определение типа документа) — включает в себя два понятия:
Из-за определённых отличий между XML и SGML, применение DTD также имеет некоторые особенности в зависимости от целевого документа
Сейчас идёт отказ от использования DTD в XML-технологии по ряду причин:
На смену DTD пришёл стандарт консорциума W3C XML Schema.
Содержание
Описание схемы документа
DTD описывает схему документа для конкретного языка разметки посредством набора объявлений (объектов-параметров, элементов и атрибутов), которые описывают его класс (или тип) с точки зрения синтаксических ограничений этого документа. Также DTD может объявлять конструкции, которые всегда необходимы для определения структуры документа, но, зато, могут влиять на интерпретацию определённых документов.
Объявление объектов-параметров
Объявление объекта-параметра определяет макрос определённого типа, на который можно ссылаться и который может быть развернут где-нибудь в DTD. Эти макросы могут не появляться в самом документе, а быть только в DTD. Если на объект-параметр ссылаются по имени их DTD, то он разворачивается в строку, в которой указано содержимое этого объекта.
Объявление элементов
Объявления элементов образовывают перечень разрешенных названий элементов в документе, а также определяют информацию относительно тегов (являются ли они обязательными) и модели содержимого для каждого элемента.
Различные ключевые слова и символы определяют содержимое элемента:
Элемент DL должен содержать один и более элементов DT или DD в произвольном порядке.
Определение атрибутов
С каждым элементом DTD-документа можно сопоставить список атрибутов. Для этого используется директива !ATTLIST, в которой указываются имя элемента, с которым может быть сопоставлен список атрибутов и параметры каждого атрибута: его имя, тип и свойства по умолчанию.
Существуют такие типы атрибутов:
Существуют такие свойства по умолчанию:
Связь документа с определённым DTD
Чтобы связать документ с определённым DTD, необходимо в начале текста документа указать элемент Объявление Типа Документа.
В зависимости от места расположения DTD, Объявление Типа Документа может быть двух видов:
Набор объявлений DTD содержится в самом тексте документа. Например:
Пример
Пример очень простого XML DTD, описывающего список людей:
Начиная с первой строки:
содержит любое число элементов
. Знак означает что возможно 0, 1 или более элементов
Пример XML-документа, использующего этот DTD:
Что означает сокращение dtd
Определение типа документа (Document Type Definition, DTD) является тем фундаментом, на котором создаются XML-документы. Вы можете создать DTD или использовать заранее определенные DTD, которые специально созданы для применения в таких отраслях, как медицина и автомобильная промышленность, и которые описывают стандартизованные документы. Независимо от того, создаете ли вы собственное DTD, или же используете заранее определенное, вам необходимо знать, что такое DTD, как оно составляется и как работает.
В этой главе мы покажем, как правильно читать, разбирать и создавать DTD. Вы узнаете, как определить, когда необходимо внешнее DTD, и когда — внутреннее DTD. Мы исследуем, почему иногда предпочтительнее пользоваться заранее определенными DTD. Создание DTD является первым шагом в правильном структурировании XML-документов. Именно DTD обеспечивают XML-анализатор информацией, которая ему необходима для выполнения своей работы.
DTD определяет части документа и указывает, каким образом они могут использоваться, что может быть в них размещено, и требуются ли им фрагменты документа. DTD представляет собой набор правил, определяющий инструкции, которые могут быть переданы анализатору (parser) для обработки им этого документа. DTD может включать в себя набор объявлений элементов и атрибутов, а также сущности (entities), условные обозначения (notations) и комментарии. Различные объявления компонентов определяют, как документ будет структурирован, и эта информация (в виде инструкций) передается анализатору (parser). Анализатор, в свою очередь, отправляет результаты в приложение, обеспечивающее просмотр данных.
На примере DTD, созданного для относительно простого документа, рассмотрим, что оно собой представляет и как работает. Это пример внутреннего DTD, то есть такого, которое содержится непосредственно в самом XML-документе:
Обратите внимание, что данное DTD целиком размещено в самом документе. Эти определения, которые в действительности являются ничем иным как инструкциями по обработке данных, точно указывают анализатору XML, как именно следует управлять различными данными, которые будут размещены в документе, а также какой информацией или текстом должны быть замещены расположенные в документе сущности. DTD, который включен в состав самого XML-документа, называется внутренним подмножеством DTD (internal DTD subset), поскольку все инструкции по обработке информации, а также сами данные документа расположены внутри единого документа.
После того как предыдущий пример будет обработан анализатором и отображен браузером на экране, результат может быть следующим (предполагается, что соответствующая таблица стилей уже подключена):
Today's Memo Памятка на сегодня
August 1, 2000 1 августа 2000 г.
200 West 34th Suite 953, Anchorage. 200 West 34th Suite 953, Anchorage.
This memo is to alert you to the Это — извещение о том, что
new XML Black Book has now been издательство Coriolis, в серии
printed. Published by The Coriolis Black Book, выпустило новую книгу
Group, this book outlines пo XML, которая содержит все
everything you need to know необходимые сведения об этом языке
about XML. разметки.
Анализатор XML сверяет разметку документа по объявлениям различных элементов. Он также осуществляет замещение сущности, для которой в DTD было определено конкретное значение. В данном примере анализатор заменяет ссылку на сущность &PUBLISHER;- объявленным значением этой сущности, т. е. — The Coriolis Group. Таблица стилей, которая будет описана позднее в отдельном HTML-файле, управляет отображением данных.
Рассмотрим наш пример более детально, чтобы понять назначение каждой строки кода в определении документа. Вот краткая сводка наиболее важных компонентов данного документа:
Объявления
Объявлением называют разметку, которая служит для процессора XML специальной инструкцией, указывающей, как он должен обрабатывать данный документ. Существуют объявления элементов, атрибутов, сущностей, условных обозначений, объявление процессора и объявление типа документа. Рассмотрим два самых важных из них — объявление процессора и объявление типа документа. В отличие от остальных объявлений, объявление процессора и объявление типа документа не участвуют в конструировании самого документа. Они не поясняют структурную роль каждого отдельного элемента или атрибута. Наоборот, они указывают процессору, какой стандарт необходимо использовать, к какому типу относится обрабатываемый документ, а также где хранится DTD, в соответствии с которым сконструирован данный документ. Еще раз обратите внимание на две строки кода, которые определяют объявление процессора или так называемое объявление XML (XML declaration) и объявление типа документа:
<?XML version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE DOC [
Объявление XML
Первая строка в предыдущем примере называется объявлением XML. Это объявление указывает процессору, что для обработки XML-документа необходимо использовать спецификацию XML используемой версии (в настоящее время — версии 1.0. Вторая часть объявления XML указывает кодировку символов в данном документе. В этом примере применена 8-битная кодировка Unicode.
Заключительный фрагмент информации, который мы включаем в объявление XML, называется объявлением отдельного документа (standalone document declaration). Это объявление указывает, существуют ли внешние источники информации для данного документа. Так, значение «yes» говорит, что в данном документе не используется внешнее DTD или же какие-либо внешние параметрические сущности (external parameter entities). Другими словами, данный документ является самодостаточным и вся необходимая информация содержится в нем самом. Значение «yes» также указывает процессору, что в разметке необходимо игнорировать любые объявления внешних ссылок. Значение «nо» указывает процессору, что он может обрабатывать любые внешние объявления. Устанавливая для атрибута standalone значение «nо», вы сообщаете XML-процессорy, что данный документ может иметь ссылки на любые внешние объявления, например на любые внешние DTD. Это не означает, что вы должны включать внешние ссылки, а лишь то, что процессор должен принять и обработать любую внешнюю ссылку, если она указана в документе.
Когда устанавливать значение «yes», а когда «nо»? Если внешнее DTD содержит объявления атрибутов с любыми установками значений по умолчанию, и эти значения применяются по отношению к элементам, встречающимся в вашем документе, то следует установить значение «nо». Также необходимо установить значение «nо», если документ содержит какие-либо пустые участки, или в документе есть сущности, и ссылки на них встречаются в самом содержании документа. Значение «yes» можно установить, если в документе нет ссылок на внешние сущности, и если вы только используете общие сущности (general entities), являющиеся частью языка XML, например, амперсанд, символы «больше чем», «меньше чем», апостроф или же кавычки.
Объявление типа документа
Строка кода <! DOCTYPE DOC [ называется объявлением типа документа, и она служит для связи XML-документа с соответствующим DTD. Выражение, следующее за <! DOCTYPE, является именем используемого DTD. В том случае если DTD является внутренним, то за объявлением <! DOCTYPE следует список элементов и атрибутов, определенных для внутреннего DTD. Именно в объявлении типа документа автор XML-документа указывает, является ли данное DTD общим (public), или же частным (private). Далее, после закрывающей скобки указывается либо само DTD, либо локатор ссылки (reference locator)-на его местоположение. Если вы не опишете DTD, то процессор не получит информацию, необходимую для конструирования документа.
Вы можете указать, что DTD является частью документа, поместив его в скобках в самом документе, либо можете указать внешнее DTD. Далее в этой главе в разделе «Внешние и внутренние DTD» рассматривается вопрос, когдаа следует применять внешнее, а когда внутреннее DTD.
Вот пример DTD, содержащегося в самом документе:
<!DOCTYPE DOC [
<!ELEMENT DOC (SUBJECT, DATE, ADDRESS, MEMO) >
<ELEMENT SUBJECT (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ADDRESS (#PCDATA)>
<!ELEMENT MEMO (# PCDATA) >
<!ENTITY PUBLISHER "The Corioiis Group">
]>
Вот пример того, как DTD хранится вне документа:
Где могут храниться DTD
DTD могут храниться как внутри самого документа, так и вне его. В данном примере мы храним DTD внутри документа:
<?XML version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE DOC [
Внутренние DTD объединяют все элементы, атрибуты, условные обозначения и сущности в самом документе. Внутренние DTD размещаются вначале документа, в объявлении типа документа. Объявление типа документа указывает процессору на DTD. Это объявление соединяет DTD с документом. Внутренние DTD указываются при помощи следующей строки кода, содержащейся в определении типа документа:
Внешние DTD также указываются в объявлении типа документа, но в них, в отличие от внутренних DTD, не содержатся все элементы, атрибуты, сущности, а указывается лишь внешний файл, в котором хранится сам DTD. Не требуется, чтобы имя файла внешнего DTD было аналогичным имени XML-документа, нужно чтобы у него было расширение DTD. Например, если документу присвоено имя BIZMEMO, то вы вполне можете присвоить файлу, хранящему DTD, имя MEMO.DTD. Помните, однако, что одно DTD может использоваться в нескольких документах. В этом заключается одна из наиболее мощных функциональных возможностей XML — единственное DTD может охватывать множество различных документов, основанных на общей структуре, позволяя создавать стандартизованные способы представления информации.
Общие и системные DTD
У вас есть возможность использовать как общедоступные (publicy available) DTD, которые разработаны для определенных целей, либо создать собственные DTD. Работая с общедоступными DTD, необходимо в объявлении типа документа указать ключевое имя PUBLIC. А если вы собираетесь использовать собственное DTD, то укажите ключевое слово SYSTEM. Вот пример кода для объявления общедоступного DTD:
<! DOCTYPE book PUBLIC "-//CompanyXYZ//DTD book//EN"
”http://www.site.com/dtds/book.dtd">
В XML для указания общедоступных DTD применяется точно такая же структура, как и в SGML. Если указанная сущность или DTD является стандартом ISO, то DTD начинается словом ISO. Если же указанная сущность или DTD не является стандартом ISO, однако используемый стандарт официально принят группой стандартизации, то объявление следует начинать со знака плюс (+). Если же он не принят официально группой стандартизации, то объявление следует начинать со знака минус (-). Далее следуют две наклонных черты (//), а затем владелец данного DTD. Если мы проанализируем DTD из предыдущего примера, то обнаружим, что указанное DTD не является стандартным, и что владельцем данного DTD является компания CompanyXYZ. Мы также увидим, что имя данного DTD — book, и что DTD расположено по адресу http://www.site.com/ в каталоге dtds.
Посмотрим, как выглядит объявление типа документа, когда в нем указывается DTD, расположенное на локальной машине:
<! DOCTYPE book SYSTEM "http://www.site.com/dtds/book.dtd">
В этом объявлении размещается ключевое слово SYSTEM, за которым следует адрес и имя файла, в котором хранится DTD. Поскольку предполагается, что данное DTD используется лишь его владельцем, то двойные наклонные чертыы не ставятся и имя владельца DTD не указывается.
Примечание
Можно встраивать одно DTD в другое, тогда встроенное DTD вызывается внешним DTD.
Быть или не быть DTD
Как вы уже знаете, в XML применение DTD не обязательно (в отличие от SGML). Поскольку XML был изначально приспособлен для работы в World Wide Web, в нем предусмотрены случаи, когда DTD просто не может работать из-за ограничений, накладываемых пропускной способностью. В таких случаях можно включать определения элементов и атрибутов непосредственно в сам документ.
Как же узнать, когда нужно использовать DTD, а когда нет? И как узнать каким DTD должно быть — внутренним или внешним?
Итак, мы показали, в каких случаях следует использовать DTD, а в каких — нет, но фактически следует рассматривать вариант создания DTD для каждого документа и хранить это DTD отдельно от документов, для работы с которыми это DTD предназначено. Хранение DTD в отдельных файлах не только обеспечит возможность их многократного использования, но и упростит их обновление и изменение. Это также будет препятствовать случайному вмешательству в DTD.
Внешние и внутренние DTD
Приняв решение о создании DTD, следует определить способ его хранения. Размер документа — лишь один из факторов, которые следует учитывать Необходимо также тщательно рассмотреть, нужна ли проверка действительности (validity) документа.
Внутренние DTD
Первый вопрос, на который следует ответить при создании документа, можно сформулировать так: нужно ли, чтобы документ был самодостаточным (self-contained). Самодостаточный документ можно перемещать из системы в систему, без потери компонентов. С таким документом можно работать в локальной системе, без выхода в Internet, а можно поместить его сменный носитель и иметь его при себе. И любой процессор XML сможет его обработать.
Кроме того, размещение информации в едином файле снижает время загрузки, анализа, отображения и обработки файла. При размещении DTD в самом документе процессор XML для отображения информации должен прочитать один файл, а не два или три (или больше).
Наконец, применение внутреннего DTD означает, что вы создаете самодостаточный файл, который является действительным и полным. Любой процессор XML может его обработать, не прибегая к поиску файла с внешним DTD.
Внешние DTD
DTD — Краткое руководство
Объявление типа документа XML, широко известное как DTD, является способом точного описания языка XML. DTD проверяют правильность структуры и словаря XML-документа по отношению к грамматическим правилам соответствующего языка XML.
XML-документ может быть определен как —
Следующая диаграмма показывает, что DTD используется для структурирования XML-документа:
DTD может быть классифицирован на основе декларации в XML-документе, например:
Мы узнаем больше об этом в главе Синтаксис DTD
Характеристики
Ниже приведены некоторые важные моменты, которые описывает DTD:
элементы, которые могут появиться в документе XML.
порядок, в котором они могут появляться.
необязательные и обязательные элементы.
атрибуты элемента и являются ли они необязательными или обязательными.
могут ли атрибуты иметь значения по умолчанию.
элементы, которые могут появиться в документе XML.
порядок, в котором они могут появляться.
необязательные и обязательные элементы.
атрибуты элемента и являются ли они необязательными или обязательными.
могут ли атрибуты иметь значения по умолчанию.
Преимущества использования DTD
Документация — Вы можете определить свой собственный формат для файлов XML. Глядя на этот документ, пользователь / разработчик может понять структуру данных.
Проверка — это дает возможность проверить достоверность файлов XML, проверив, отображаются ли элементы в правильном порядке, имеются ли обязательные элементы и атрибуты, не были ли вставлены элементы и атрибуты неправильно, и так далее.
Документация — Вы можете определить свой собственный формат для файлов XML. Глядя на этот документ, пользователь / разработчик может понять структуру данных.
Проверка — это дает возможность проверить достоверность файлов XML, проверив, отображаются ли элементы в правильном порядке, имеются ли обязательные элементы и атрибуты, не были ли вставлены элементы и атрибуты неправильно, и так далее.
Недостатки использования DTD
Он не поддерживает пространства имен. Пространство имен — это механизм, с помощью которого имена элементов и атрибутов могут быть назначены группам. Однако в DTD пространства имен должны быть определены внутри DTD, что нарушает цель использования пространств имен.
Поддерживается только тип данных текстовой строки.
Это не объектно-ориентированный. Следовательно, концепция наследования не может быть применена к DTD.
Ограниченные возможности выразить мощность элементов.
Он не поддерживает пространства имен. Пространство имен — это механизм, с помощью которого имена элементов и атрибутов могут быть назначены группам. Однако в DTD пространства имен должны быть определены внутри DTD, что нарушает цель использования пространств имен.
Поддерживается только тип данных текстовой строки.
Это не объектно-ориентированный. Следовательно, концепция наследования не может быть применена к DTD.
Ограниченные возможности выразить мощность элементов.
DTD — Синтаксис
XML DTD может быть либо указан внутри документа, либо его можно сохранить в отдельном документе, а затем документ можно связать с документом DTD для его использования.
Синтаксис
Основной синтаксис DTD выглядит следующим образом —
В приведенном выше синтаксисе —
Элемент указывает синтаксическому анализатору проанализировать документ из указанного корневого элемента.
DTD-идентификатор — это идентификатор для определения типа документа, который может быть путем к файлу в системе или URL-адресом к файлу в Интернете. Если DTD указывает на внешний путь, он называется внешним подмножеством.
Элемент указывает синтаксическому анализатору проанализировать документ из указанного корневого элемента.
DTD-идентификатор — это идентификатор для определения типа документа, который может быть путем к файлу в системе или URL-адресом к файлу в Интернете. Если DTD указывает на внешний путь, он называется внешним подмножеством.
Внутренний DTD
Синтаксис
Синтаксис внутреннего DTD выглядит так:
где root-element — это имя корневого элемента, а element-объявлений — это место, где вы объявляете элементы.
пример
Ниже приведен простой пример внутреннего DTD —
Давайте пройдемся по приведенному выше коду —
Начать декларацию — Начните декларацию XML со следующего заявления.
Объявление DOCTYPE имеет восклицательный знак (!) В начале имени элемента. DOCTYPE сообщает анализатору, что DTD связан с этим документом XML.
Тело DTD — за объявлением DOCTYPE следует тело DTD, где вы объявляете элементы, атрибуты, сущности и нотации —
Завершение объявления — Наконец, раздел объявления DTD закрывается с помощью закрывающей скобки и закрывающей угловой скобки (]>). Это эффективно завершает определение, и после этого документ XML следует сразу же.
правила
Объявление типа документа должно появляться в начале документа (с предшествующим только заголовком XML) — оно не разрешено где-либо еще в документе.
Подобно объявлению DOCTYPE, объявления элементов должны начинаться с восклицательного знака.
Имя в объявлении типа документа должно соответствовать типу элемента корневого элемента.
Объявление типа документа должно появляться в начале документа (с предшествующим только заголовком XML) — оно не разрешено где-либо еще в документе.
Подобно объявлению DOCTYPE, объявления элементов должны начинаться с восклицательного знака.
Имя в объявлении типа документа должно соответствовать типу элемента корневого элемента.
Внешний DTD
Синтаксис
Ниже приводится синтаксис для внешнего DTD —
пример
В следующем примере показано использование внешнего DTD —
Содержимое файла DTD address.dtd выглядит так:
Системный идентификатор позволяет указать местоположение внешнего файла, содержащего объявления DTD. Синтаксис выглядит следующим образом —
Как вы можете видеть, он содержит ключевое слово SYSTEM и ссылку URI, указывающую на местоположение документа.
Публичные идентификаторы предоставляют механизм для определения местоположения ресурсов DTD и записываются следующим образом:
Как видите, он начинается с ключевого слова PUBLIC, за которым следует специальный идентификатор. Публичные идентификаторы используются для идентификации записи в каталоге. Публичные идентификаторы могут следовать любому формату, однако обычно используемый формат называется формальными общедоступными идентификаторами или FPI.
DTD — Компоненты
В этой главе мы обсудим компоненты XML с точки зрения DTD. DTD будет в основном содержать объявления следующих компонентов XML:
элементы
Элементы XML могут быть определены как строительные блоки документа XML. Элементы могут вести себя как контейнер для хранения текста, элементов, атрибутов, объектов мультимедиа или их комбинации.
Каждый документ XML содержит один или несколько элементов, границы которых либо ограничены начальными и конечными тегами, либо пустыми элементами.
пример
Ниже приведен простой пример элементов XML
Атрибуты
пример
Ниже приведен простой пример атрибутов XML —
Если атрибуты используются в XML DTD, их необходимо объявить, что будет подробно обсуждаться в главе Атрибуты DTD.
юридические лица
Сущности являются заполнителями в XML. Они могут быть объявлены в прологе документа или в DTD. Объекты могут быть в первую очередь классифицированы как —
Есть пять встроенных сущностей, которые играют в правильно сформированном XML, они —
Мы подробнее рассмотрим объявления сущностей в XML DTD в главе DTD Entities
DTD — Элементы
Элементы XML могут быть определены как строительные блоки документа XML. Элементы могут вести себя как контейнер для хранения текста, элементов, атрибутов, объектов мультимедиа или их комбинации.
Элемент DTD объявляется с объявлением ELEMENT. Когда файл XML проверяется DTD, анализатор сначала проверяет корневой элемент, а затем проверяются дочерние элементы.
Синтаксис
Все объявления элементов DTD имеют эту общую форму —
Объявление ELEMENT используется для указания синтаксического анализатора, который вы собираетесь определить элемент.
elementname — это имя элемента (также называемое универсальным идентификатором ), которое вы определяете.
content определяет, какой контент (если есть) может идти внутри элемента.
Объявление ELEMENT используется для указания синтаксического анализатора, который вы собираетесь определить элемент.
elementname — это имя элемента (также называемое универсальным идентификатором ), которое вы определяете.
content определяет, какой контент (если есть) может идти внутри элемента.
Типы содержимого элемента
Содержимое объявления элементов в DTD можно классифицировать следующим образом:
Пустой контент
Ниже приводится синтаксис объявления пустого элемента —
В приведенном выше синтаксисе —
ELEMENT — объявление элемента категории EMPTY
elementname — имя пустого элемента.
ELEMENT — объявление элемента категории EMPTY
elementname — имя пустого элемента.
Ниже приведен простой пример, демонстрирующий объявление пустого элемента —
Элемент Содержимое
В объявлении элемента с содержимым элемента содержимое будет допустимым элементом в скобках. Мы также можем включить более одного элемента.
Ниже приведен синтаксис объявления элемента с содержимым элемента:
ELEMENT — тег объявления элемента
elementname — это имя элемента.
ELEMENT — тег объявления элемента
elementname — это имя элемента.
Ниже приведен простой пример объявления элемента с содержимым элемента —
Список операторов и синтаксических правил
Ниже в таблице приведен список операторов и синтаксических правил, которые можно применять при определении дочерних элементов.