Является ли HTML5 допустимым XML? - PullRequest
31 голосов
/ 06 апреля 2011

Я в замешательстве.Сотрудник дал мне понять, что теги, заканчивающиеся на />, такие как <br />, все еще могут использоваться в HTML5.Я думал, что можно использовать только <br> стиль.Все «разговоры» в Интернете касаются использования последних.

Может кто-нибудь объяснить мне это?Это кажется очень запутанным и плохо документированным.

И это поднимает другой вопрос: считается ли HTML 5 правильно сформированным XML?

Ответы [ 5 ]

24 голосов

Нет.Контрпримеры:

Это действительный HTML5, но недействительный XHTML5:

  1. Некоторые закрывающие теги могут быть опущены:

    <p>First
    <p>Second
    

    См.: P-end-tag (

    ) не требуется в HTML
  2. script escape-магия:

    <script><a></script>
    

    См.: Что такое CDATA в HTML?

  3. Атрибуты без значений (логические атрибуты):

    <input type="text" disabled />
    

    См .: Правильное значение дляотключенный атрибут

  4. Атрибуты без кавычек, например:

    <div data-a=b></div>
    

    См .: В XHTML 1.0 Strict значения атрибутов необходимо заключать в кавычки?

  5. Неявные открытые элементы и несколько элементов верхнего уровня.

    Некоторые элементы HTML создаются неявно.Например, html.Это позволяет HTML иметь «несколько элементов верхнего уровня»:

    <!doctype html><title>a</title><p>a</p>
    

    См .: Необходимо ли писать теги HEAD, BODY и HTML?

Допустимый XHTML, который является недопустимым HTML:

  1. CDATA конструкции с недействительными тегами внутри

  2. ENTITY и другим восклицательным знакомконструкции, допускающие миллиард смеха: Как работает атака XML DoS на миллиард смеха?

Допустимый HTML и XHTML, но с разными значениями:

  1. HTML имеет сотни именованных ссылок на символы (например, &pound;, &copy;), XML имеет только 5 (quot, amp, apos, lt, gt).
10 голосов
/ 06 апреля 2011

Существует XML-сериализация, которая называется XHTML5 . По сути, вы можете использовать либо HTML5 (сериализация HTML), либо XHTML5 (сериализация XML). В проекте спецификации говорится, что HTML5 «является форматом, предложенным для большинства авторов», в основном по тем же причинам, по которым люди рекомендуют text/html для XHTML 1.1.

9 голосов
/ 15 августа 2012

Вы можете разметить свою страницу как действительные HTML5 и XHTML5: http://www.w3.org/TR/html-polyglot/

Разметка Polyglot, которая соответствует четко определенному набору ограничений, интерпретируется как совместимая, независимо от того, обрабатываются ли они как HTML или как XHTML, согласно спецификации HTML5.

Основной документ может выглядеть так:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <title></title>
  </head>
  <body>
  </body>
</html>

Конечно, вам придется следовать некоторым дополнительным правилам (например, не использовать элемент noscript), изложенным в связанном рабочем проекте.

3 голосов
/ 21 апреля 2011

HTML5 может быть написан с или без самозакрывающихся слешей; предполагается, что он обратно совместим как с кодом HTML 4.01, так и с кодом XHTML 1.0, поэтому его легко преобразовать в действительный HTML5. - это XML-сериализация, называемая XHTML5, но для целей обратной совместимости с браузерами IE ее использовать не рекомендуется. Технически, HTML5 не считается правильно сформированным XML.

1 голос
/ 21 апреля 2011

Ни при каких условиях не следует ожидать, что любой HTML-документ (независимо от версии) будет "правильно сформированным xml "

html! = Xml.

Это другая спецификация с различными предложениями (я намеренно избегаю слова «правила» здесь) о том, как это следует интерпретировать.

В спецификации HTML 5 достаточно «сделай так, но ничего, если ты не будешь», покажите, что удивительно, что любой из браузеров показывает одно и то же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...