Мне нужно, чтобы объявить XML на страницу, используя тип документа XHTML?


Я видел некоторую противоречивую информацию о том, что документ XHTML также должен объявить себя XML.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Однако в других местах я вижу (в том числе w3.org) что DOCTYPE должен быть первым объявлением тега.

Поскольку W3 говорит это, это должно быть правдой. Тем не менее, у меня, вероятно, есть несколько страниц/приложений, которые лгут о том, что следуют первому методу. Каковы мои риски?

Edit : я только что пробежал страницу через W3 Validator с причем без XML-декларации и это проходило в обе стороны. На данный момент, я предполагаю, что это просто "стиль".

4 6

4 ответа:

<?xml version="1.0" encoding="utf-8"?>

... - это версия и кодировка по умолчанию для XML, поэтому она вам вообще не нужна. Если вы используете XHTML в качестве текста / html, его, вероятно, вообще не должно быть.

Однако в других местах я вижу (в том числе w3.org) что DOCTYPE должен быть первым тегом.

Звучит как некоторая путаница... DOCTYPE не является тегом, как и в XML?> (который называется XML-декларацией и выглядит как инструкция по обработке, но это не одна из них, любой).

Если вы включаете и то, и другое, объявление XML должно быть первым. Хитрость заключается в том, что IE6 DOCTYPE sniffer обнаруживает только стандартные типы DOCTYPE, если они являются первым делом на странице, что означает, что вы не можете использовать XML-объявление, и вы должны придерживаться XML 1.0 и кодировки UTF-8 (что не является большой потерей).

Из спецификации XHTML 1.1:

Объявление XML, подобное приведенному выше не требуется во всех XML-документах. Авторы документа XHTML должны использовать XML декларации во всех своих документах. Авторы документа XHTML должны использовать XML объявление когда характер кодировка документа отличается от по умолчанию UTF-8 или UTF-16 и нет кодировка определяется a более высокий уровень протокол.

Http://www.w3.org/TR/xhtml11/conformance.html

Http://validator.w3.org/ принимает только материал перед . Наоборот (доктип раньше ?xml) не будет проверяться.

Я никогда не включал его (всегда шел только с doctype), и w3c говорит, что мои строгие проекты XHTML 1.0 "допустимы."