Вопрос

Я знаю назначение DOCTYPE (и каков каждый URL / идентификатор в строке) с точки зрения веб-стандартов и проверки страницы, но я не уверен в том, что это на самом деле "есть" в контексте XML-документа.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Hello</p>
  </body>
</html>

Является ли это частью фактической структуры XML-документа, или это какой-то комментарий, подобный "подсказке", который отмечается, а затем удаляется?

Каково значение буквы "!" перед названием?Обозначает ли это особый тип "элемента"?Как они называются?

Пример, который я опубликовал, - это XHTML для Интернета, но используется ли DOCTYPE также в XML-документах общего назначения?

Это было полезно?

Решение

DOCTYPE был "унаследован" от SGML (предполагалось, что он указывает на файл DTD, который объясняет, как разобрать файл), однако понятный синтаксис XML и пространства имен сделали его в значительной степени неактуальным.Единственное реальное применение DOCTYPE / DTD в XML - это определение разрешенных именованных объектов (например &nbsp;).

Спецификация XML даже позволяет "не проверяющим" анализаторам, которые полностью игнорируют DTD-файл (веб-браузеры используют такие анализаторы, если только вы не попали в text/html ловушка, в этом случае XML-анализатор вообще не используется).

DTD - это довольно бедный для целей валидации (трудно указать правила для более чем одного уровня вложенности, невозможно указать типы атрибутов, кроме нескольких предопределенных типов).Схема RelaxNG может быть гораздо более точной.

DTD также не полностью поддерживает пространства имен, что приводит к нелепым обходным путям, таким как ТИП ДОКУМЕНТА XHTMLplusMathMLplusSVG.

В веб-браузерах определенные типы документов имеют желаемый побочный эффект запуск режима рендеринга, соответствующего стандартам.Это скорее взлом, чем предполагаемое использование DOCTYPEs.

  • Если вы используете настоящий XHTML (application/xhtml+xml – тот, который вообще не открывается в IE), тогда вообще не используйте DOCTYPE (это рекомендация из XHTML 5).Режим XML запускает рендеринг, соответствующий стандартам, независимо от типа документа.

  • Если вы используете text/html режим, затем используйте <!DOCTYPE html>.Это документ HTML 5, и он самый короткий, который обеспечивает наилучший рендеринг во всех браузерах.Браузеры не используют DOCTYPE для каких-либо других целей, так что вы ничего не упускаете.

  • Если вы обрабатываете файлы XHTML с помощью анализаторов XML (вне браузеров), то пожалуйста не забудьте правильно настроить DTD Catalog, иначе ваш анализатор может быть Дозирование w3.org пытаюсь каждый раз извлекать DTD.Если вы не можете использовать DTD catalog, то отключите "externals" в анализаторе или опустите DOCTYPE и не используйте именованные объекты (т. Е.использование &#160; вместо того , чтобы &nbsp;)

Другие советы

DOCTYPE является частью спецификации XML (см. соответствующий подраздел здесь <). / a>) и может содержать ссылку на DTD , " & Quot; Декларации DTD, или оба. Многие & Quot; современные & Quot; Использование XML вообще не использует DOCTYPE - как упоминает porneL, и XML-схема, и RelaxNG являются более мощными способами определения синтаксиса документа. См. этот пост в блоге Тима Брея для немного больше фона.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top