Открыть сервис

DTD

DTD (от англ. Document Type Definition — определение типа документа) — это набор правил и деклараций, задающих структуру, элементы и атрибуты для документов определённого типа в языках разметки, таких как SGML, XML и HTML. DTD описывает, какие теги (элементы) могут встречаться в документе, в каком порядке они могут следовать, какие атрибуты допустимы для каждого элемента, а также определяет сущности (entities) для подстановки текста или символов. DTD является одним из старейших механизмов валидации структуры документов, предшествуя более современным схемам, таким как XML Schema (XSD) и Relax NG.

История

Концепция DTD возникла в рамках стандарта SGML (Standard Generalized Markup Language), разработанного в 1980-х годах и принятого как международный стандарт ISO 8879:1986. SGML использовался для создания сложных структурированных документов, особенно в издательском деле и оборонной промышленности. DTD в SGML служил формальным описанием грамматики документа, позволяя программам-парсерам проверять соответствие документа заданному типу.

С появлением XML (Extensible Markup Language) в 1998 году, разработанного Консорциумом Всемирной паутины (W3C), DTD был включён в спецификацию XML 1.0 как один из способов определения схемы документа. Однако XML-версия DTD унаследовала от SGML ряд ограничений, в частности, неполную поддержку типов данных (все значения атрибутов трактовались как строки) и отсутствие пространств имён. Несмотря на это, DTD оставался основным механизмом валидации XML-документов в течение нескольких лет.

В 2001 году W3C рекомендовал XML Schema (XSD) как более мощную и гибкую альтернативу DTD. XSD поддерживает типизацию данных, пространства имён, наследование и другие возможности, отсутствующие в DTD. Тем не менее, DTD продолжает использоваться в ряде приложений, особенно в старых системах, в форматах документов (например, DocBook, TEI) и в HTML до версии HTML5.

Структура и синтаксис DTD

DTD состоит из деклараций, которые могут быть размещены непосредственно в документе (внутренний DTD) или в отдельном файле (внешний DTD). Внешние DTD подключаются через DOCTYPE-декларацию в начале документа.

Основные типы деклараций

  1. Декларация элемента (ELEMENT) — определяет имя элемента и его содержимое. Содержимое может быть:

Пример: ``dtd <!ELEMENT книга (название, автор+, год?)> <!ELEMENT название (#PCDATA)> <!ELEMENT автор (#PCDATA)> <!ELEMENT год (#PCDATA)> ``

  1. Декларация атрибута (ATTLIST) — определяет список атрибутов для элемента, их типы и значения по умолчанию. Типы атрибутов включают:

Пример: ``dtd <!ATTLIST книга isbn ID #REQUIRED жанр (роман|поэзия|драма) "роман" язык CDATA "русский"> ``

  1. Декларация сущности (ENTITY) — определяет именованный фрагмент текста, который может быть подставлен в документ. Сущности бывают:

Пример: ``dtd <!ENTITY автор "Лев Толстой"> <!ENTITY стиль "&автор; — русский писатель"> ``

  1. Декларация нотации (NOTATION) — определяет формат данных, используемый в документе (например, для внешних нетекстовых объектов).

Внутренний и внешний DTD

Внутренний DTD размещается внутри документа между <!DOCTYPE ... [ ... ]>: ``xml <!DOCTYPE книга [ <!ELEMENT книга (название, автор)> <!ELEMENT название (#PCDATA)> <!ELEMENT автор (#PCDATA)> ]> <книга> <название>Война и мир</название> <автор>Лев Толстой</автор> </книга> ``

Внешний DTD хранится в отдельном файле (например, book.dtd) и подключается: ``xml <!DOCTYPE книга SYSTEM "book.dtd"> ``

Применение DTD

DTD широко применяется в следующих областях:

Преимущества и недостатки

Преимущества

Недостатки

DTD и современные альтернативы

С развитием XML-технологий DTD был в значительной степени вытеснен более мощными схемами:

Тем не менее, DTD остаётся востребованным в легаси-системах, в образовательных целях и в некоторых нишевых приложениях, где важна простота и совместимость.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →