Какая потребность в XHTML?

В интервью мне задали вопрос, о котором я никогда не думал, что было "У нас уже есть HTML, который удовлетворяет всем требованиям написания веб-страницы, так что же нужно для XHTML?"

Я много разобрался, а также прочитал много статей, но я не могу правильно понять, почему XHTML был введен. Пожалуйста, объясните мне.

Ответ 1

Я на самом деле пишу это, чтобы спросить, почему три сообщения, которые говорят о браузере-консистенции и хорошо сформированы html, были отклонены?

Как известно, HTML является отраслевым стандартом. Браузеры реализованы так, что они отображают помеченный контент, как описано в стандарте HTML. К сожалению, есть области, которые не были четко определены в HTML: что произойдет, если пользователь забудет закрывающий тег или что делать, если указанное изображение не найдено? некоторые браузеры используют тег 'alt', чтобы иметь текстовый элемент для держателя места, а некоторые браузеры отображают тег 'alt' в качестве подсказки. Известный режим "причуд" браузеров является результатом отсутствия ясности. Из-за этого стало вполне возможно, что одна и та же веб-страница будет отображаться по-разному в разных браузерах.

Также, как и использование HTML, возникла еще одна проблема: он не был расширяемым - не было способа добавить пользовательские теги.

XHTML решает вышеуказанные проблемы:

  • принять XML для обеспечения расширяемых тегов.
  • предоставляет "строгий" стандарт для веб-браузеров.

XHTML имеет четко определенные правила о структуре, и они могут быть программно применены. Проверьте различные онлайн-проверки XHTML. Они расскажут, хорошо ли сформирован ваш XHTML или нет (и выделите проблемные области). Из-за этих строгих правил ваша страница более или менее гарантированно выглядит одинаково во всех браузерах, реализующих XHTML.

[ note], если вы хотите проверить выше, пожалуйста, обратитесь к тексту "Head First XHTML и CSS"

Ответ 2

Потому что это действительно XML. Это очень помогает, поскольку вы можете использовать множество инструментов, первоначально разработанных для XML, таких как синтаксические анализаторы XML, XSLT, XPath, XQuery,...

Нормальный HTML - это диалект SGML, который не может быть проанализирован без знания схемы.

<ul>
    <li>one
    <li>two
    <li>three
</ul>

правильный HTML, но не правильный XML. Если вы хотите проанализировать это, вы должны знать, что ul -элементы должны быть закрыты, но li нет.

Ответ 3

XHTML также позволяет внедрять другие XML-диалекты, такие как MathML, Ruby, SVG и т.д. (Вы также можете вставлять XHTML в другие диалекты XML, если желательно.)

Если вы просто создаете веб-страницу, вам необязательно нужно XHTML. Но если вы программно создаете страницу, вы можете что инструменты для генерации XML лучше, чем те, которые генерировать HTML.

Ответ 4

В дополнение к ответу Йоханнеса, HTML слишком слаб в своих интерпретациях и толерантности, где строгое оформление XHTML отрицает это.

Толерантность приводит к дисперсии, что приводит к несовместимости браузера, что приводит к темной стороне.

Ответ 5

От Wiki:

Поскольку они должны быть хорошо сформированными, истинные документы XHTML позволяют автоматизированная обработка используя стандартные инструменты XML - в отличие от HTML, что требует относительно сложного, мягкий и обычно настраиваемый парсер. XHTML можно рассматривать как пересечение HTML и XML во многих так как это переформулировка HTML в XML.

Согласование HTML со стандартами XML позволяет проводить более последовательный анализ страницы. В то время как в HTML, например, вам разрешалось иметь теги из порядка <b><u>test</b></u> теперь вы не можете, они должны быть закрыты в том порядке, в котором они были открыты. Такие вещи делают разбор DOM (который теперь сильно используется в AJAX) намного.

Ответ 6

Я уверен, что вы, должно быть, столкнулись с этой из статьи W3. Из этой статьи многое можно узнать. Короче говоря, XHTML придерживается правил xml, кроме того, что есть набор тегов HTML. Наиболее важные отличия:

* XHTML elements must be properly nested
* XHTML elements must always be closed
* XHTML elements must be in lowercase
* XHTML documents must have one root element

Ответ 7

Я вижу кучу ответов на голосование здесь, которые делают неправильные предположения о том, как работают браузеры. Поэтому позвольте мне дать 2 цента по этому вопросу.

Во-первых, почему существует XHTML?

Из устья лошади:

был организован двухдневный семинар для обсуждения необходимости новой версии HTML в XML. Мнение на семинаре было четким: "Да": на XML-основе HTML другие языки XML могут включать в себя биты XHTML, а документы XHTML могут включать в себя биты других языков разметки. Мы также могли бы воспользоваться редизайном, чтобы очистить некоторые из более неопрятных частей HTML и добавить некоторые новые необходимые функции, такие как лучшие формы.

Короче говоря, XHTML был создан по двум причинам:

  • Разрешить микширование другого содержимого (например, mathml и svg) в том же документе с четкими правилами форматирования.
  • Чтобы расширить и очистить HTML.

Сделать вещи проще для проверки не было целью дизайна, а также не тем, что было необходимо, поскольку валидаторы HTML4 существуют и являются исчерпывающими.

Легче ли анализировать XHTML для браузеров?

Да и нет. XML проще разбирать, чем сумок HTML-тегов, но, если вы не используете тип xhtml + xml или application/xml mime для вашей страницы XHTML, браузеры анализируют его с помощью механизма синтаксического анализа HTML. Однако, если вы используете xm mime-типы, IE зажимает ваш контент. Об этом объясняется в блоге IE. Нет никакой разницы в том, как браузеры обрабатывают XHTML и HTML, если вы используете его с типом mime text/html!

Да, да! Вы лжете!

Действительно, они делают, но только из-за doctype. Браузеры используют дотипы в верхней части HTML-документов, чтобы определить, должны ли они использовать режим стандартов или режим quirks (= режим ошибок). Все действующие документы XHTML включают в себя doctype, который запускает режим стандартов. Однако в HTML вы можете получить тот же результат, включив "<! Doctype html > "; в верхней части страницы.

Итак, вы говорите, что XHTML не имеет никакой цели?

Совсем нет. XHTML имеет много преимуществ:

  • Его можно преобразовать с помощью инструментов XML, таких как XSLT
  • Его легче анализировать в серверном коде
  • Он может интегрировать пользовательскую разметку, все еще проходя проверку проверки

Итак, я должен использовать его тогда?

Как всегда, ответ "зависит".

  • Серверная, возможно, полезная. Если вы хотите иметь преимущества XML на стороне сервера, вы хотите использовать вариант XHTML, будь то XHTML1 (сериализация HTML4 как XML) или XHTML5 (сериализация HTML5 как XML).
  • Клиентская сторона, не полезна. Я очень рекомендую избегать обслуживания ваших пользователей типом XML mime. Разбор XML не сочетается с изящной обработкой ошибок, создавая только "ошибку синтаксического анализа XML" вместо документа, если у вас есть проблема с разметкой на вашей странице. Если вы не будете писать ошибки, вам понадобится грациозная обработка ошибок.

Как насчет HTML5? Состязается ли он с XHTML?

Нет, нет. HTML5 имеет две сериализации, одну как HTML и одну как XML. Преимущество состоит в том, что у обоих теперь есть строгие правила синтаксического анализа. Вы получите предсказуемое поведение во всех браузерах независимо от используемого вами подхода. Однако HTML5, анализируемый как HTML, имеет преимущество грациозной обработки ошибок. Вот почему я предпочитаю этот подход. Как всегда, YMMV.

Ответ 8

XHTML - это попытка поощрения разработки "хорошо сформированного" HTML.

HTML развился более 10 лет. Его реализация и реализация браузеров, которые анализируют и отображают ее, не совсем согласованы. Вот почему совместимость между браузерами является основной головной болью.

HTML основан на SGML (стандартный обобщенный язык разметки.) XML также получен из SGML, поэтому они являются кузенами рода. XHTML женится на двух, предоставляя (теоретически) преимущества XML для HTML. Это включает в себя четко определенную схему, которая может быть надежно проверена, запрошена и преобразована.

Ответ 9

Почему был создан XHTML?

  • HTML не очень расширяемый. XHTML должен был исправить это, введя пространства имен, чтобы языки, такие как MathML или SVG, могли быть включены в строку.
  • XMl намного проще разбирать, чем SGML (формат, используемый HTML до версии 5)
  • Из-за огромного количества сайтов с ошибками браузеры попытались исправить неправильную разметку. Новые браузеры должны были попытаться исправить это таким же образом. XHTML пытается повысить стандарты, указав, что будет отображаться только структурно правильный код.

Насколько хорошо это удалось?

  • XHTML широко распространен, но почти всегда работает с типом text/html MIME из-за несовместимости с Internet Explorer (до версии 8). Многие из этих страниц на самом деле будут разбиты, если бы они служили XML. Таким образом, ни один из трех преимуществ, описанных выше, действительно не материализовался.
  • Многие люди решили использовать XHTML, поскольку они полагали, что это обеспечит лучшую совместимость в будущем. Работа прекратилась на XHTML2.0, а в то время как HTML5 будет иметь сериализацию XHTML, это, кажется, получает минимальное внимание. XHTML не обеспечивает будущих преимуществ совместимости в обозримом будущем. Mozilla и Safari рекомендуется использовать только HTML.
  • HTML со строгим DTD уже имеет более чистый формат. HTML5 возьмет это дополнительно, удалив переходное DTD, удалив ненужные элементы и определив стандартный способ анализа документов со степенью обратной совместимости. Браузеры по-прежнему будут исправлять ошибки для сериализации HTML, вместо того, чтобы форматировать разметку, но по крайней мере они будут делать это одинаково. Те, кто заботится о правильном коде, все равно будут использовать валидаторы.

Что нужно для XHTML?

XHTML имел похвальные цели, и, возможно, он сможет доставить в будущем. Я не могу рекомендовать XHTML для возможных будущих преимуществ, которые он мог бы предоставить, когда HTML теперь намного проще. Вы действительно должны использовать XHTML, если предыдущий код или ваши инструменты заставляют вас.

Ответ 10

Я думаю, что это помогает браузеру правильно отображать html, не делая предположений о том, где теги должны быть закрыты. Каждый раз, когда браузер предполагает что-то, что вы знаете, что происходит.

Ответ 11

XHTML заставляет вас писать более чистый код, который легче поддерживать, делает его более последовательно и проще подключить к DOM. Сравнение XHTML с HTML похоже на сравнение языка программирования, который строго типизирован для свободно программируемого языка программирования.

Как упоминалось выше, XHTML позволяет вам играть с SVG и MathML. Я хотел бы добавить RDFa в этот список. RDFa позволяет добавлять семантику в ваш контент, который не покрывается микроформатами. Я лично много делаю с Dublin Core и Friend-of-the-Friend.

Ответ 12

XHTML - это просто связь между системами. HTML очень сложно разобрать, из-за количества изменений, которые могут произойти в отношении того, что хорошо сформировано. Поскольку XML является строгим в своей интерпретации, эта проблема была удалена.

Подумайте о архитектуре RESTful. Если URL-адрес является постоянным местом для элемента, тогда системы, которые хотели бы получить доступ к этому элементу, должны иметь возможность использовать информацию, полученную от доступа к URL-адресу. XHTML не делает это возможным само по себе, потому что система уже может анализировать HTML и получать необходимую информацию. XML просто делает это проще. Существует никаких ограничений предопределенного набора тегов, которые затрудняют классификацию данных в документе (хотя технически вы можете это сделать в HTML, потому что браузеры будут игнорировать его). Вы можете использовать все, что хотите классифицировать, какие данные извлекаются.

Ответ 13

В двух словах: XHTML часто бывает полезен и предпочтительнее HTML, если вы хотите использовать инструмент на основе XML, чтобы манипулировать/преобразовывать/генерировать HTML-страницы на стороне сервера.

Множество примеров можно найти в инфраструктурах MVC на основе компонентов, таких как Sun Oracle JSF, который использует Facelets как Технология просмотра на основе XHTML. Компоненты на стороне сервера определены в XSD, и страницы анализируются с помощью SAX parser. Вы даже можете добавить <!DOCTYPE html> в начало страницы, чтобы Facelets генерировали "чистый" действительный и строгий HTML5. Microsoft ASP.NET MVC имеет аналогичную технологию просмотра.

Когда вы пишете HTML-код, XHTML не приносит большой пользы, или он должен отталкивать "прохладу" использования (сверх) раздутой технологии.

См. также:

Ответ 14

Если я хочу обходить ваш сайт и анализировать его содержимое, я могу сделать это только в том случае, если он XML.

Анализ HTML - это кошмар.

Ответ 15

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

Ответ 16

Поскольку XHTML имеет гораздо больше смысла!

Дело в том, что, хотя что-то не может предоставить никаких технических возможностей, оно все же является улучшением, если оно переделано, чтобы быть более ясным и логичным. Поэтому рефакторинг кода является хорошей идеей, даже если он не изменяет никакой функциональности. Поэтому Brainfuck не может быть хорошим языком программирования, даже если он обладает всеми возможностями Java.

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