Это приемлемо для недействительного XHTML? - PullRequest
20 голосов
/ 06 августа 2008

Я заметил, что многие сайты, включая SO, используют XHTML в качестве языка разметки, а затем не соответствуют спецификации. Просто просматривая исходный код SO, отсутствуют закрывающие теги для абзацев, недопустимые элементы и т. Д.

Так должны ли инструменты (и разработчики) использовать тип документа XHTML, если они собираются создать недопустимую разметку? И должны ли браузеры быть более твердыми в принятии плохой наценки?

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

Ответы [ 14 ]

16 голосов
/ 06 августа 2008

Есть много причин для использования допустимой разметки. Мне нравится то, что он позволяет вам использовать валидацию как форму регрессионного тестирования, предотвращая появление разметки, эквивалентной «дельта-гниению», которая приводит к реальным проблемам рендеринга, когда ошибки достигают некоторой критической массы. И действительно, просто неаккуратно допускать накопление «ленивых» ошибок, таких как опечатки и неправильно вложенные / незакрытые теги. Допустимая разметка - это один из способов идентификации увлеченных программистов .

Существует также проблема отладки: допустимая разметка также дает вам стабильную базовую линию для работы с неизбежными проблемами кросс-браузерной совместимости. Ни один веб-разработчик, который ценит свое время, не должен начинать отладку проблем совместимости браузера, предварительно не убедившись, что разметка по крайней мере синтаксически действительна & mdash; и любая другая недопустимая разметка должна иметь вескую причину присутствия.

(Кстати, stackoverflow.com не проходит оба эти теста, и предложения по устранению проблем были отклонены .)

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

2 голосов
/ 15 сентября 2008

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

2 голосов
/ 02 сентября 2008

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

Использование XHTML облегчает автоматическое обнаружение ошибок, каждое изменение может быть автоматически проверено на недопустимую разметку. Это предотвращает ошибки, особенно при использовании автоматически сгенерированного контента. Для веб-разработчика очень легко использовать механизм шаблонов (JSP, ASP.NET StringTemplate, и так далее) копировать / вставлять один закрывающий тег слишком мало или слишком много. Когда это ваша единственная ошибка, она может быть обнаружена и исправлена ​​немедленно. Однажды я работал на сайте, у которого было 165 ошибок проверки на страницу, из которых 2 или 3 были фактическими ошибками. Их было трудно найти в суматохе других ошибок. Автоматическая проверка предотвратила бы эти ошибки у источника.

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

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

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

2 голосов
/ 02 сентября 2008

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

1 голос
/ 11 октября 2008

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

Правильность - это вещь, которая отличает XHTML от HTML. XHTML с «только одной» ошибкой разметки перестает быть XHTML. Это должно быть идеально каждый раз .

Если сайт "XHTML" работает с некоторыми ошибками, это потому, что браузеры игнорируют DOCTYPE и интерпретируют страницу как HTML.

См. XHTML-прокси , который вызывает интерпретацию страниц как XHTML. Большую часть времени они терпят неудачу . Это одна из причин, по которой будущее XHTML неопределенно, и почему разработка HTML была возобновлена ​​.

1 голос
/ 06 августа 2008

Я бы вообще не использовал XHTML только для того, чтобы уберечь себя от философского стресса. В любом случае браузеры не воспринимают это как XHTML.

Браузеры отклонят плохую разметку, если страница будет отправлена ​​как application / xhtml + xml, но это редко происходит. Это хорошо.

Я бы больше беспокоился о таких вещах, как встроенное использование CSS и JavaScript с переполнением стека, просто потому, что они усложняют обслуживание.

1 голос
/ 06 августа 2008

Хотя я согласен с мнением «если это хорошо, тогда не беспокойтесь об этом», тем не менее, это хорошо для того, чтобы следовать стандарту, даже если он не полностью поддерживается сейчас. Вы все еще можете использовать Table для разметки, но это не очень хорошая причина.

1 голос
/ 06 августа 2008

Хотя я верю в стремление к действительному XHTML и CSS, это часто трудно сделать по ряду причин.

  • Во-первых, часть контента может быть загружена через AJAX. Иногда фрагменты неправильно вставляются в существующий DOM.
  • Возможно, просматриваемый вами HTML-код не был создан в одном и том же документе. Например, страница может быть составлена ​​из компонентов или шаблонов, а затем объединена непосредственно перед ее отображением в браузере. Это не оправдание, но вы не можете предположить, что HTML-код, который вы видите, был закодирован вручную.
  • Что если некоторый код, сгенерированный Markdown, недействителен? Вы не можете винить переполнение стека за то, что не производите правильный код.
  • Наконец, цель DOCTYPE - не просто сказать «Привет, я использую действительный код», но также дать браузеру информацию о том, что вы пытаетесь сделать, чтобы он хотя бы приблизился чтобы правильно проанализировать эту информацию.

Я не думаю, что большинство разработчиков указывают DOCTYPE, а затем явно не соблюдают его.

0 голосов
/ 06 августа 2008

Для 99,999% сайтов это не имеет значения. Единственный раз, когда это имело значение, я запустил ввод HTML через HTMLTidy, чтобы XHTML-ize его, а затем запустил обработку на нем.

В значительной степени, это аксиома старого программиста: не верьте никаким данным.

0 голосов
/ 06 августа 2008

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

...