Мы объявляем Doctype в HTML, как правило, есть следующие типы:
<! Doctype html public -// w3c // dtd xhtml 1.0 transitional // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd>
<! Doctype html public -// w3c // dtd xhtml 1.0 strict // en http://www.w3.org/tr/xhtml1/dtd/xhtml1strict.dtd>
<! Doctype html public -// w3c // dtd html 4.01 // en http://www.w3.org/tr/html4/strict.dtd>
<! Doctype html public -// w3c // dtd html 4.01 Transitional // en http://www.w3.org/tr/html4/loose.dtd>
Да, здесь есть HTML и XHTML, а также есть переходные и строгие. Как следует из названия, XHTML означает, что этот документ записан в формате XML, а HTML означает, что этот документ написан в формате HTML. Переход означает, что этот документ соответствует требованиям Transitional.dtd или Ship.dtd, а строго означает, что этот документ соответствует требованиям strict.dtd. Но на самом деле, у нас часто есть следующие недоразумения:
(1) Мой документ объявлен xhtml, тогда мой документ должен быть точно в формате XML.
(2) Мой документ объявлен строгим, поэтому мой документ должен быть отображен в строгом режиме, в противном случае он отображается в режиме Quirks.
Оба эти понимания очень прямые, но они неверны, и мы часто совершаем такие ошибки.
Во -первых, документ объявлен как XHTML и HTML, и не имеет прямой корреляции с анализом документа (то есть анализом браузера документа). Фактически, как документ Browser Parse зависит от того, в каком формате сервер предоставляет документ. Вообще говоря, есть два способа: Text/HTML и Application/XHTML XML. Только документы, представленные в приложении/HTML XML, могут быть разыгрываются в XML. Однако из -за исторических причин браузера не все браузеры поддерживают приложение/XHTML XML -документы. Версии перед IE7 (включая IE7) не могут поддержать этот формат. Если IE7 встретит документ в этом формате, он предложит пользователю сохранять в качестве других файлов. Учитывая широкое использование IE, большинство документов в настоящее время предоставляются в Text/HTML. Документы, представленные в Text/HTML, проводятся в соответствии с семантикой HTML. Все знают, что HTML очень устойчив к ошибкам. Даже если тег в вашем документе не закрыт правильно, HTML может отображаться правильно. Поэтому, если ваш XHTML предоставляется в Text/HTML (в большинстве случаев), даже если вы объявляете XHTML в Doctype, ваш документ не будет анализируется в формате XML, поэтому он не может гарантировать, что ваш документ строго соответствует спецификациям XML. Фактически, многие эксперты предполагают, что если ваш документ не предоставлен в форме приложения/XHTML XML, то вы должны объявить его HTML.
Во -вторых, то, как браузер отдает ваш документ, не определяется DTD, который вы объявляете. Фактически, если вы объявляете Doctype и DTD, ваш документ отображается в строгом режиме (или в стандартном режиме, многие браузеры также включают в себя почти стандартный режим, и здесь нет различий). Для документов без Doctype режим Quirks используется для рендеринга. Следовательно, режим рендерирования браузера не имеет прямой связи с DTD, который вы объявили.
Наконец, независимо от того, объявите ли вы это строгим.dtd или Transitional.dtd, кажется, нет никакой разницы в текущих браузерах. Strict.dtd намного строго, чем Transitional.dtd или Ship.dtd, и многие элементы не могут использоваться в строгого.dtd. Однако из -за совместимости браузера, даже если вы объявляете strict.dtd в doctype, браузер все еще может правильно отображать ваш документ при столкновении с элементами, которые не допускаются в strict.dtd. Я предполагаю, что браузер не учитывает DTD. Например, метка iframe не существует в strict.dtd, но даже если ваш документ объявляет strict.dtd, а затем использует метку iframe, браузер (включая IE7, IE8, FF3.0, Safari 3.0) может правильно отобразить ваш документ. Браузер не анализирует ваш документ в соответствии с объявленным вами DTD. В настоящее время это может гарантировать, что ваш документ соответствует strict.dtd или Transitional.dtd. Это может быть проанализировано только через некоторые онлайн -валидаторы, такие как W3C Validator. Браузер не может предоставить вам хорошую поддержку. Конечно, на самом деле, если вы можете написать свой документ строго строго в соответствии с DTD, который вы объявляете, это лучше, чтобы ваш документ не будет производить ошибки, когда браузер строго соблюдает DTD в будущем.
поэтому,
(1) Если ваш документ предоставлен в Text/HTML, то вы должны объявить его HTML. Если вы хотите, чтобы IE7 отображался правильно, то вы должны сделать это еще больше.
(2) Если ваш документ объявлен как xhtml, то вы должны предоставить его в форме приложения/HTML XML.
(3) Попробуйте объявить Doctype и DTD перед вашим документом, чтобы убедиться, что вы не используете режим Quirks для визуализации документа.
(4) Если вы объявляете DTD, то вы должны строго написать свой документ в соответствии с требованиями DTD. Особенно, если вы объявите strict.dtd, то вы должны быть осторожны с тем, какие элементы не используются.
Примечание. Со временем поддержка браузера для HTML и XHTML, strict.dtd и Transitional.dtd будет лучше. Если ваш браузер намного выше, чем IE7, IE8, FF 3.0 и Safari 3.0, то вы должны обратить внимание на применимость этой статьи.