Широко распространено мнение, что лучшая причина для проверки своего HTML - это гарантия того, что все браузеры будут обрабатывать его последовательно и предсказуемо.
Однако черновик HTML 5 содержит две спецификации в одной. Сначала спецификация автора, описывающая элементы и атрибуты, которые должны использовать авторы HTML, и их взаимосвязи. Проверка страницы HTML 5 основана на этой спецификации. Включенные элементы и атрибуты не взяты непосредственно из HTML 4, но должны быть обоснованы из первых принципов, что означает, что некоторые функции HTML 4, такие как сводный атрибут в <table>, longdesc в <img> и атрибут профиля на <head>, в данный момент не фигурируют в этом черновике. Такие функции не считаются устаревшими, они просто не включены. (Их отсутствие в проекте остается предметом споров, хотя их включение в ближайшее время маловероятно.)
Во-вторых, черновик определяет спецификацию обработки браузера, которая стремится точно определить, как синтаксический анализатор браузера будет обрабатывать любой передаваемый им поток байтов, независимо от того, насколько хорошо сформирован и действителен HTML. Это означает, что, когда браузеры полностью поддерживают HTML 5, можно будет предсказать, как любой браузер будет обрабатывать HTML для гораздо более широкого диапазона входных данных, чем только те, которые проходят проверку.
В частности, поскольку HTML 5 определен как 100% обратно совместимый с сегодняшней сетью, весь действительный HTML 4 и все недопустимые, но часто используемые разметки будут продолжать обрабатываться точно так же, как сегодня, независимо от того, HTML 5 действителен или нет.
Поэтому, как минимум, любой, кто использует любую функцию из HTML 5, HTML 4 или любой предыдущей версии HTML, а также многие проприетарные расширения, может быть уверен, что его HTML-код будет согласован и предсказуем во всех браузерах.
Учитывая это, имеет ли смысл ограничивать HTML 5 тем, который будет проверять, и какую практическую пользу мы получим от этого?
Какой еще допустимый HTML-код, кроме элемента "Q", не работает в IE? Обратите внимание, что мы здесь не говорим о CSS или JavaScript, а только о HTML.
«Когда браузеры полностью поддерживают HTML 5, можно будет предсказать, как любой браузер будет обрабатывать HTML для гораздо более широкого диапазона входных данных, чем только те, которые проходят проверку». - О, какой сладкий, безудержный, блаженно наивный оптимизм. Получайте удовольствие, ожидая, пока все браузеры реализуют один и тот же алгоритм синтаксического анализа HTML со 100% точностью.
@ Пол - смеется. Да, я не задерживаю дыхание. Но тогда это точно так же, как и любой другой аспект HTML5. Многие части реализуются последовательно, даже если другие реализуются фрагментарно или непоследовательно. Как веб-авторы, мы можем просто использовать надежные биты.
да, правда. И Firefox на самом деле теперь включает в себя парсер HTML5, верно?
Так что это идиома, которую я раньше не слышал. Откуда взялось слово «стоит свеч»?
@james - Кажется, это довольно хорошо объясняет: phrases.org.uk/meanings/260900.html






Given this, does it make any sense to limit ones HTML 5 to that which will validate, and what practical benefit will we get from doing so?
Да, конечно. Вы забываете, что будущее не определено. В частности, вы неявно предполагаете, что спецификации HTML 5 никогда не изменятся, и никогда не осуждаете какие-либо функции. Это, конечно, только укрепляет статус-кво. Определенно желательно удалить поддержку некоторых функций в долгосрочной перспективе, чтобы упростить появление новых разработок (в частности, если они могут противоречить друг другу).
Может не быть немедленной выгоды в создании действительного HTML 5 (за исключением того, что по-прежнему упрощает проверку и, следовательно, разработку). Но улучшение качества большинства веб-сайтов может принести долгосрочную выгоду, поскольку это значительно упрощает выход за рамки текущих технологий и стандартов.
Есть неявное предположение, что функции не будут отброшены, да. Браузеры отказываются от функций только в том случае, если: а) они не сломают существующую сеть - что бывает крайне редко; или б) показано, что эта функция является уязвимостью безопасности, которая может относиться как к действительному, так и к недействительному HTML.
Это очень оптимистично с вашей стороны. Я горячо надеюсь, что этого не произойдет, потому что это в конечном итоге глупо и просто означает, что будущие версии браузеров будут нести с собой все больше и больше бесполезного балласта.
@KonradRudolph, печально то, что так устроен мир: stackoverflow.com/questions/23453621/…. Чертова экономика.
Хороший вопрос.
Основная цель валидации (по крайней мере для меня) - помочь мне отловить ошибки в моей разметке и дать мне хорошую основу для построения при тестировании страниц в разных браузерах; если разметка действительна и страница загружена в IE6, это проблема IE6.
Тот факт, что браузеры по-прежнему должны вести себя предсказуемым образом, даже если ваша разметка включает технически недопустимый HTML5, такой как сводка таблицы или ключ доступа привязки, несколько запутывает воду.
Как правило, я всегда хочу, чтобы мои страницы проходили проверку по вышеупомянутой причине. Однако, если (например) атрибут был удален из спецификации HTML5 без добавления явно подходящей замены, я мог бы быть склонен продолжить использование устаревшего или устаревшего атрибута и принять ошибки проверки.
Как всегда, я считаю, что нужно знать свое ремесло.
Если вы знаете, что делаете, и создали осознанное решение для создания страницы, которая не проверяется по разумным причинам, это не проблема. Если вы просто пишете код, который не проверяется, потому что вы не знаете ничего лучше, это совсем другое дело.
Стивен
Это действительно одна из моих проблем с HTML5. Нет смысла определять подмножество потоков как «действительное», если браузер в любом случае должен обрабатывать все потоки одинаково. Эоны, потраченные на обсуждение в списке WHATWG резервных механизмов, - огромная трата времени каждого, особенно когда XML уже должен был решить все проблемы синтаксического анализа.
Было бы полезно создать документ с лучшими практиками по синтаксическому анализу устаревших недействительных документов, но это не имеет отношения к веб-стандарту, это просто еще один ингредиент, чтобы еще больше замутить воду вокруг HTML5, который не может решить, хочет ли он кодифицировать существующее поведение (как это сделал HTML 3.2), переопределить более чистую платформу (как попробовал HTML 3.0) или добавить новые расширения по частям.
В любом случае, вопрос может быть неуместным, потому что никогда не будет браузера, «полностью поддерживающего HTML5». Этого слишком, слишком много: производители браузеров не могли реализовать абсолютно все, вплоть до мелочей, даже если бы они захотели, чего, по крайней мере, Microsoft явно не делает. Вместо этого, очевидно, полезные функции будут выбраны поставщиком и получат более широкое признание.
HTML5 - это не связная спецификация HTML, это обширный, нечитаемый и незаконченный рецепт Хикси для каждой случайной вещи, которую, по его мнению, должен делать веб-браузер. Это не удастся. Альтернативный подход W3, XHTML2, уже потерпел неудачу. У веб-стандартов нет четкого направления на будущее. Мы уронили мяч.
@bobince. В WHATWG доминируют производители браузеров (кроме MS). Хикси не вкладывает ничего в черновик HTML5, если производители браузеров заявляют, что не будут его реализовывать. В самом деле, это, вероятно, его причина номер один не включать вещи.
В HTML5 есть много вещей, которые практически не требуют поддержки со стороны поставщиков. Это не так плохо, как раньше - некоторые из ранних черновиков читаются как не более чем «самые популярные предложения дураков года на alt.html» - но все еще есть много фальшивых вещей ...
... к счастью, некоторые из худших функций, таких как привязка данных (о которой мы должны были узнать из IE, была ужасной идеей) и шаблоны повторения (что является самым уродливым предложением, которое я когда-либо видел в предполагаемом документе стандартов), недавно были пыль.
Мне кажется, что черновой процесс работает хорошо. Смысл существования HTML 5 состоит в том, чтобы задокументировать Интернет таким, какой он есть на самом деле, а не таким, каким его хотели бы видеть люди. Я не вижу никакой возможности, что нереализуемые функции останутся к тому времени, когда он достигнет рекомендации W3C.
Если бы HTML5 действительно соответствовал действительности, я был бы счастлив. К сожалению, он одновременно добавляет кучу функций и требований - конечно, ни один из них не является невыполнимым (ни даже шаблонов повторения), но некоторые из них уродливы. Это следовало сделать в два этапа.
Алохи: Действительно, в настоящее время даже процессу W3C требуются две совместимые реализации, чтобы функция достигла Предлагаемой рекомендации.
Валидация никогда не сводилась к получению согласованных результатов в браузерах, даже до появления HTML5. Это миф, распространяемый теми, кто не понимает, о чем они говорят, даже если они думают, что понимают.
Настоящая причина валидации - это и всегда была исключительно проблема обеспечения качества. Это просто способ обнаружения ошибок, которые. Несмотря на то, что результаты для любой данной ошибки могут быть или вскоре могут стать согласованными для разных браузеров, все же возможно, что сам результат не такой, как задумано.
Авторам важно уметь обнаруживать ошибки в своем коде, потому что с более чистой и безошибочной разметкой легче работать и поддерживать, особенно при работе в коллективной среде. Хотя большинство индивидуальных ошибок могут оказаться безобидными и не вызвать серьезных проблем, некоторые из них могут дать неожиданные результаты. например Неправильно, перекрывающиеся или незакрытые элементы в некоторых случаях могут вызвать непредвиденные проблемы с макетом, и разрешение валидатору сообщить вам, где находится ошибка, помогает исправить проблему. Но если результаты содержат десятки безобидных ошибок, это может сделать обнаружение и обработку более трудными, чем нужно.
<!DOCTYPE html>. Причина, по которой здесь хотелось бы соответствовать, - это как можно более простой способ получить стандартный режим. Это то, что вы можете запомнить, в отличие от типов документов HTML 4.01 или XHTML 1.0, которые вам нужно искать, копировать и вставлять каждый раз. Конечно, причина, по которой вам нужен стандартный режим, заключается в меньшем количестве сюрпризов на слое CSS.longdesc, summary и profile. (Обратите внимание, что люди не согласны с тем, действительно ли это пустая трата времени, но в нынешнем виде HTML5 делает их устаревшими.) То есть, если у вас ограниченные ресурсы для улучшения доступности, ваши ограниченные ресурсы лучше потратить на что-то другое, а не на longdesc. и summary. Если у вас ограниченные ресурсы для семантической чистоты, ваши ресурсы лучше потратить на что-то другое, чем на то, чтобы убедиться, что у вас есть правильное заклинание в profile.<font> устарел, потому что приведение его в соответствие заставит анти-<font> стандартистов думать, что люди HTML5 сошли с ума, что может привести к плохому PR. <applet> устарел в основном из-за того, что не дает специальной разметки одному конкретному плагину. Атрибут classid в <object> устарел, потому что на практике он специфичен для ActiveX.name на <a> и атрибут language на <script>.(Я разрабатываю валидатор HTML5 Validator.nu, который также является механизмом валидации HTML5, используемым валидатором W3C.)
Спасибо, Анри, за очень продуманный и подробный ответ.
Отличный ответ. Я думаю, что ошибки синтаксического анализа - это основная причина для проверки. Прямо сейчас можно использовать какой-нибудь html5 в xhtml. Почему бы не использовать поле электронной почты вместо текстового поля. Он просто вернется к текстовому полю, если браузер не знает этот тип поля. Это может сделать страницу недействительной, но дает лучший результат.
Сопровождение валидатора W3C HTML5 здесь. Недавно я написал короткую статью «Зачем нужна проверка?» для раздела «О программе» валидатора HTML5:
http://validator.w3.org/nu/about.html#why-validate
Источник текста этого раздела находится здесь:
https://github.com/validator/validator/blob/master/site/nu-about.html#L160
И запросы на включение с предложенными уточнениями / дополнениями приветствуются.
В настоящее время у меня есть следующее:
The core reason to run your HTML documents through a conformance checker is simple: To catch unintended mistakes—mistakes you might have otherwise missed—so that you can fix them.
Beyond that, some document-conformance requirements (validity rules) in the HTML spec are there to help you and the users of your documents avoid certain kinds of potential problems. To explain the rationale behind those requirements, the HTML spec contains these two sections:
- rationale for syntax-level errors
- rationale for restrictions on content models and on attribute values
To summarize what’s stated in those two sections:
- There are some markup cases defined as errors because they are potential problems for accessibility, usability, interoperability, security, or maintainability—or because they can result in poor performance, or that might cause your scripts to fail in ways that are hard to troubleshoot.
- Along with those, some markup cases are defined as errors because they can cause you to run into potential problems in HTML parsing and error-handling behavior—so that, say, you’d end up with some unintuitive, unexpected result in the DOM.
Validating your documents alerts you to those potential problems.
«Широко распространено мнение, что лучшая причина для проверки HTML - это гарантия того, что все браузеры будут обрабатывать его последовательно и предсказуемо». Я полагаю, говоря о браузерах, вы имели в виду не IE :) Есть множество стандартных вещей, которые не работают в IE.