Что нужно для XHTML? - PullRequest
       20

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

33 голосов
/ 17 февраля 2009

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

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

Ответы [ 16 ]

33 голосов
/ 17 февраля 2009

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

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

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

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

26 голосов
/ 17 февраля 2009

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

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

23 голосов
/ 17 февраля 2009

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

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

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

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

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

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

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

19 голосов
/ 17 февраля 2009

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

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

14 голосов
/ 17 февраля 2009

С Вики :

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

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

8 голосов
/ 17 февраля 2009

Я уверен, что вы наверняка сталкивались с этой статьей из 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
6 голосов
/ 08 июля 2010

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

Прежде всего, почему существует XHTML?

Изо рта лошади:

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

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

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

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

Проще ли анализировать XHTML для браузеров?

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

Да, они делают! Вы лжете!

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

Так вы говорите, что XHTML не имеет смысла?

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

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

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

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

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

А как насчет HTML5? Это конкурирует с XHTML?

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

5 голосов
/ 17 февраля 2009

XHTML - это попытка стимулировать разработку «правильно сформированного» HTML.

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

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

3 голосов
/ 07 июля 2010

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

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

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

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

Зачем нужен XHTML?

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

2 голосов
/ 17 февраля 2009

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

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

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