Вопрос по html – Является ли соответствие XHTML бессмысленным?

20

Я сейчас создаю сайт, и до сих пор мучительно заставлял все быть совместимыми, и это выглядит примерно одинаково во всех браузерах. Однако я начинаю реализовывать некоторые сторонние / бесплатные javascript-коды, которые делают такие вещи, как добавление атрибутов (например, order = 2). Я мог бы обойти это, но это - боль, и я начинаю терять свои принципы обеспечения того, чтобы все было верно. В самом деле, есть ли смысл обойти что-то подобное? Я получил плагин HTMLValidator для Firefox и, глядя на большинство крупных сайтов (включая этот, Google и т. Д.), Они не являются действительными XHTML или HTML.

Я удалил тег соответствия модного слова. Откровенно обидно, имхо. Jon Limjap
Также см. «Выбор версии HTML». вопрос:stackoverflow.com/questions/3654/html-version-choice Chris

Ваш Ответ

11   ответов
2

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

Не пытайтесь обойти эти нестандартные атрибуты. Валидаторы удобны как инструменты для двойной проверки вашего кода на непреднамеренные ошибки, но, как мы все знаем, даже полностью действительный xhtml не всегда будет одинаково отображаться в разных браузерах. Много раз, когда проектные решения требуют от нас использования специфичных для браузера (и нестандартных) хаков для достижения эффекта. Это жизнь веб-разработчика, о чем свидетельствует количество технологических сайтов (Google, Yahoo и т. Д.), Которые не проходят валидацию.

1

Быть действительным в формате HTML обычно помогает вам и движку рендеринга браузера. Чем меньше уловок приходится иметь дело с браузерами, тем больше они могут сосредоточиться на добавлении новых функций. Чем строже вы, тем меньше времени вы будете тратить на размышления о том, почему этот проприетарный тег f @ # cking не работает в других браузерах.

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

5

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

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

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

2

Что касается браузеров, то соответствие XHTML бессмысленно в этом:

  1. Browsers don't have XHTML parsers. They have non-version-specific, web-compatible HTML parsers that build a DOM around the http://www.w3.org/1999/xhtml namespace.

  2. Some browsers that have XML parsers can treat XHTML markup served as application/xhtml+xml as XML. This will take the XML and give default HTML style and behavior to elements in the http://www.w3.org/1999/xhtml namespace. But, as far as parsing goes, it has nothing to do with XHTML. XML parsing rules are followed, not some XHTML DTD's rules.

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

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

Что не является бессмысленным, так это попытка соответствовать ожиданиям браузеров. HTML5, помогает с этим большим временем. И, говоря о HTML5, вы можете задавать пользовательские атрибуты сколько хотите. Просто добавьте к ним префикс data-, как в & lt; p data-order = & quot; Это допустимый, настраиваемый атрибут. & Quot; & gt; test & lt; / p & gt ;.

Все основные браузеры, кроме IE, имеют парсеры XHTML. DTD XHTML является своего рода уважаемым (именованные сущности работают, когда он присутствует, иногда ошибочно, даже когда его нет :) Правильность и валидация в терминах XML - разные вещи.
4

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

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

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

Вероятно, лучше написать действительный HTML 3, чем недействительный XHTML, если есть что-то, что вы хотите сделать, что разрешено в одном, но не в другом.

+1 за ваш последний абзац
0

Конечно, вы всегда можете просто написать и написать так, как хотите, убедившись, что как минимум это работает. Конечно, мы уже перенесли этот менталитет и стали свидетелями его выхода,Internet Explorer 6.

Я большой поклонникМайк Дэвидсон: подход к разработке стандартов.

Just because you can validate your code doesn’t mean you are better than anybody else. Heck, it doesn’t even necessarily mean you write better code than anybody else. Someone who can write a banking application entirely in Flash is a better coder than you. Someone who can integrate third-party code into a complicated publishing environment is a better coder than you. Think of validation as using picture perfect grammar; it helps you get your ideas across and is a sign of a good education, but it isn’t nearly as important as the ideas and concepts you think of and subsequently communicate. The most charismatic and possibly smartest person I’ve ever worked for was from the South and used the word “ain’t” quite regularly. It didn’t make him any less smart, and, in fact, it made him more memorable. So all I’m saying is there are plenty of things to judge someone on… validation is one of them, but certainly not the most important.

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

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

0

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

Как говорилось в большинстве постеров, это действительно все, что нужно вашей аудитории.

2

Просто помните, что тег XHTML визуализируется в большинстве браузеров иначе, чем без него. Атрибут DOCTYPE определяет, в каком режиме отображает браузер, и определяет, что разрешено, а что нет. Если вы отказываетесь от соответствия XHTML, просто обязательно повторите тестирование во всех браузерах.

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

3

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

1

Я думаю, что пишу "действительный код" важно просто потому, что вы подаете пример, следуя правилам. Если бы каждый разработчик написал код для Fx, Safari и Opera, я думаю, что IE нужно было «начинать следовать правилам». раньше, чем с версией 8.

0

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

Альтернативой использованию пользовательских атрибутов является использование «rel». атрибут, для примера см.LiteBox (и его родня).

Похожие вопросы