По двум комментариям к вчерашней статье про второе рождение HTML я понял, что существуют большие опасения, вызванные непониманием, что это за "новый" язык такой.
Опасения выражаются так:
&%$. Зоопарк форматов всё множится и множится…
и так:
т.е. велкам ту “dark ages” - огромные траблы с парсингом и монстроподобные регулярки, досвидания expat & elementree & xpath & xslt &
На самом деле, ничего такого не будет, и этот самый "новый" HTML далеко не такой новый.
Но сначала я напомню, в чем была идея XHTML. У нас есть веб, где после оголтелой конкуренции браузеров царствует странная штука под названием HTML 3.2, которую никто не знает, как парсить. Причем, относительная доля сложностей, сязанных с "мягкостью" синтаксиса не идет ни в какое сравнение со сложностью, возникающей от того, что браузеры пытаются, каждый на свой манер, поправлять синтаксические ошибки верстки. Это важно понимать.
HTML превратился в "tag soup" из-за полностью неопределенных браузерных алгоритмов исправления ошибок верстки.
А не из-за пресловутых опциональных закрывающих тегов или кавычек атрибутов, как любят думать многие люди, никогда не изучавшие вопрос.
Соответственно появляется XML-вариант синтаксиса, в котором обработка ошибок перенимается из строгих правил XML. Обработка очень простая: любая ошибка синтаксиса фатальна и невосстановима.
К сожалению, эта — очень здравая — идея страдала одним минусом: парсеры — маленькие, быстрые и надежные — не были обратно совместимы с существующим контентом. Поэтому эта идея не сработала.
И на данный конкретный исторический момент у нас как раз и есть тот самый зоопарк из языков и реализаций:
Новая идея, с которой в свое время выступила WHAT WG, заключается в том, чтобы главную проблему — неопределенные правила обработки HTML, включая восстановление из синтаксических ошибок — решить по-другому: определить эти правила наконец.
Эта чудовищная по сложности работа была проделана за прошедшие 3 года в WHAT WG. Были детально разобрано и четко описано реальное поведение браузеров относительно синтаксиса, отношения с DOCTYPE'ами, генерации DOM'а и разбора темного леса доDOM'ного javascript'а вроде document.write.
И разработчикам теперь предлагается такой HTML5:
По-моему, это что угодно, но не зоопарк :-)
Комментарии: 45
они реально надеются предусмотреть вообще все ошибки? желаю удачи....
какого вообще лешего кто-то когда-то придумал, что ошибки должен исправлять клиент? ошибки должен исправлять тот, кто их делает и никто иной. если у того, кото их делает не хватает мозгов их исправить - путь пользуется соответствующим ПО, которое бы не позволяло ему делать ошибки...
могу привести аналогию: проектировщик здания нарисовал какую-то хрень (верстальщик), комиссия не смотря приняла (транзитные сервера), рабочие (браузер) начали строить и в процессе строительства начинают перепланировку здания, ибо нарисованное стоять не может, начинают делать подпорки в критических местах, делать двери в глухих комнатах и пр...
предлагаю whatwg пойти дальше и убрать вообще какие-либо ошибки у программ... ОС должна угадывать, что имел ввиду программист, когда писал эту ахинею!
Больше 4 лет пишу коммерческий софт, который
преобразует web публикации(статьи,таблицы,etc) в
удобоваримую для просмотра и анализа форму
(Excel + OO в последнее время).
Это на счет "никогда не изучавшие вопрос".
Хотя если камень был в сторону незнания HTML5 то
это правда - первый раз прочитал здесь.
На некоторых сайтах безнадежно "умирает" даже
tidylib - их можно парсить или Explorer-COM или
ctypes + mozilla engine. Первый вариант
монстроидный а второй (для Linux решений) похож на кошмар.
Количество таких сайтов за три года
под давление XHTML заметно сократилось.
Теперь, я так понимаю, усе вернется "на круги
своя". А весь сегодняшний "зоопарк" так и
останется только к нему еще добавится HTML5.
Ну и что? Неужели Вы думаете что все кто
игнорировали XHTML W3C стандарт теперь обратят
хоть какое-то внимание на ЭТО?
Да ни разу. Я имею ввиду что эта html5lib будет
просто неспособна(IMHO) распарсить то что многие
"спецы" нагенерят (а особенно то что уже
нагенерили), что сведет ее применимость к
применимости expat для парсинга сегодняшнего
WEB. Либо она будет называтся "С интерфейс к
MS IE6/7 COM".
Тесты на HTML-valid давно
есть и они дают весьма подробный отчет о
результатах, но их весьма успешно игнорировали.
И PHP & Co как и раньше будут работать по
принципу "в IE работает - и гут", ну может
Mozilla к списку добавят некоторые.
По поводу того что все W3C игнорировали. B MS и Borland долгое время создавали C++ компиляторы
так же похожие на ANSI/ISO стандарт как страус
на орла, но ниче - подергались-подергались и
успокоились - счас даже в Builder'e можно так-се
покомпилить тяжелый код. А вот W3C в итоге
показала свою несостоятельность.
Нет, то не к Вам было :-). Это собирательный образ, и Вы как раз, мне кажется, к нему не относитесь, комментарии читаю с интересом.
Нет, не под давлением XHTML. Это пропагандистская работа сделал свое дело, а XML'ная велл-формедность никогда не работала (из-за IE).
Я не думаю. HTML5 ведь не разрешает ошибки. Напротив, нынешняя замена валидатору (conformance checker) отлавливает даже больше ошибок. И кривая страница с точки зрения HTML5 — это кривая страница и есть. Только теперь он четко говорит, что с ней делать в этом случае.
Странно, почему все умалчивают одну деталь:
HTML5 должен быть обратно совместим с HTML4, это должно выражаться не только в поддержке его тегов, но и в способе его отображения браузерами.
Получается, что HTML5 будет принимать за стандарт то, как странички показывает IE6/7? Или HTML5 будет устанавливать новые правила отображения и отпадет обратная совместимость?
Обратная совместимость HTML5 с HTML4 касается только парсинга текста и создания из него DOM-дерева элементов. С пособ отображения тут вообще не участвует. Это — епархия CSS, и здесь мы пока остаемся со всем набором хаков, который есть сейчас, и котороые научились использовать.
HTML5 не берется "чинить" веб, это, как показала практика, нереально. Он берется строить новые вещи на четкой базе.
Какое дерево будет построено для куска:
С учетом того, что форма внутри таблицы это очень распространенная ошибка.
И как поступать в случае с пропущенными тегами?
Интересно, как они собираются проталкивать эту чёткую базу в умы программистов того же IE? Если бы не эта маленькая деталь, давно бы уже пользовались чётким XHTML. А броузер сам бы давал по ушам любителям развязности.
К тому же, XHTML заведомо шустрее своего старшего собрата. Зачем же создавать ещё одного монстрика?
А база как раз и строится с учетом его текущего поведения, как самого популярного браузера. Через весь стандарт можно заметить один и тот же паттерн: "это пишется так-то; если оно написано не так, то это ошибка; в этом случае нужно делать как текущие браузеры (то есть как IE); IE делает это так-то".
Разработчики IE, между тем, в 7-й версии показали, что они хотят исправить браузер. Но также они и заявляли, что "простите, но Microsoft не будет гоняться за разными непонятными стандартами". И вот здесь позиция W3C как раз является залогом того, что у нас будет таки один нормальный стандарт.
Итоги таковы (поправьте если что не так):
Плюсы:
* Открытость разработки;
* Наличие тестовой реализации;
* Поддержка производителями броузеров;
* Совместимость со старым вебом (в отличии от XHTML);
* Вклад в разработку ресурсов w3c;
Минусы:
* Тормознутость любого парсера HTML;
* Сложность его реализации;
* Смена "политики партии" вызывает массу недовольства и недоверия (психологический аспект);
* В отличии от XHTML, HTML не заставит верстальщиков исправлять свои ошибки (работает и ладно);
* Стандарт более-менее прочно привязан к броузеру компании-монополиста, чем дяди с баксами в глазах не постесняются воспользоваться;
Я бы задумался над пунктами:
Почему вы считаете это недостатками?
Мне отчего-то кажется, что большинство верстальщиков проверяли ошибки XHTML-сайтов не well-formed парсерами, а W3Cшным валидатором. Поэтому здесь разницы между синтаксисами нет: если есть, чем проверять (а оно есть), то будут проверять. Привыкли :-)
Вот это мне например, кажется не минусом, а наоборот, плюсом. Собственно, той причиной, по которой любая кухарка может слабать страничку.
Т.е. принцип максимальной либеральности в отношении входных данных обязан работать (я считаю, к примеру, что одна из причин небыстрого распространения SVG - именно XML-ные драконовские правила обработки ошибок).
FX Poster: по первому пункту: это необходимо для создания страниц, облегчающих их машинную обработку. Проще обработать -> проще реализовать -> богаче выбор софта и больше специализированных парсеров -> вкалывают роботы, а не человек :)
По второму: ни один общественный стандарт не должен зависеть от реализации, тем более коммерческой. Это способствует монополизации, что само по себе очень плохо.
Иван Сагалаев: я о том, что приятно, когда система сама указывает на жуков, не давая им даже возможности добраться до ничего не подозревающего конечного пользователя.
Зверёк Харьковский: кто от этого выиграет, кроме кухарки? И кто проиграет?
Да, Иван, а откуда взялся вообще этот валидатор?
Его написал Henri Sivonen, один из активных участников WHAT WG.
Только технически это не валидатор. Термином "валидация" называют проверку документа на соответствие некому декларативному набору правил. Для HTML4 и XHTML1 для этого использовался "язык" DTD, который достаточно убог. А эта штука во-первых проверяет валидность по "языку" Relax NG, который гибчем DTD, а во-вторых, кроме валидности проверяет еще и другие критерии соответствия стандарту, которые в принципе можно проверить машинно. Поэтому она лучше.
Эту страницу я предпочёл отдать на растерзание машине. Вы, скорее всего, тоже. Машина большая, потому что ей приходится поддерживать множество условностей, упрощающих документ для просмотра людскими глазками. Большинство людей голый HTML не читают. И не пишут. И вообще, markdown рулит ;)
Тот пункт был скорее из разряда FUD :) За неимением более подходящего предложения даже и не думал спорить "лучше/хуже". Как обычно, поживём, увидим, прочувствуем.
Не понимаю, что здесь такого. Браузеры ведь определяют все ошибки, почему стандарт не может этого сделать? Тем более, что как раз этот стандарт делают разработчики браузеров. И его делают уже три года.
Если html5lib не сможет - то и браузеры не смогут. Любой проверит страницу на отображение хотя бы в одном браузере.
Ещё раз обращу внимание, что если в Мозилле проверять будут (а Gecko сейчас удерживает почти 20%, АФАИР), то и стандарт выполнять будут. Да и MS всё-таки сдвинулась с мёртвой точки.
У меня такое впечатление, что большинство критиков HTML5 думают, что этот стандарт появился откуда-то из астрала, и его не будет поддерживать ни один браузер, хотя прямо же написано обратное.
Это очень, очень плохо. Зачем ориентироваться на стандарты прошлого века?
Как-то весьма странно они показали свое желание. У меня лично сложилось такое впечатление:
"Сунулись в давно забытую поделку, посмотрели
код, почесали репу - нихрена не понятно. Для
создания нормальной версии браузера нужно
полностью переписать код движка, а это ломает.
И вообще - несолидно Microsoft что-то мелкое переписывать.
А юзер он быдло - ему и так сойдет - сами под
нас прогнутся."
Это я к тому, что кроме смены интерфейса и пары-тройки мелких исправлений в IE нихера не сделали - как это расценивать. Теперь же с полным официальным приходом HTML 5 они вообще забьют на модернизацию своего уродца.
P.S. Время от времени так и подмывает забить на этот IE вообще и показывать эго пользователям, что IE unsupported browser. Please use modern browser for surfing.
Что значит "ориентироваться"? Оно служит только как ориентир реакции на ошибки, и это единственный правильный выбор. Но сам стандарт же не призывает делать ошибки, это же нонсенс :-). Напротив, стандарт определяет, как писать HTML (или XHTML) без ошибок. В отличие от старой идеологии, которая HTML объявляла "ошибочным по определению".
А то и значит, что сейчас IE самый распространенный браузер, а через 5 лет про него уже никто и не помнит - переписывать стандарты? По мне так лучше XML-нотация - накосячил, хрен тебе а не показ страницы до тех пор, пока не исправишь таблицы. Вот тут уже привели очень яркий пример во что может вылиться попустительство к написанию кода.
P.S. Если честно, то я с большим трудом понял, что там толковал Mr... - он человеческих языков-то не знает, а еще в нечеловеческие полез. И писалО оно в редакторе каком-то. Моя личная рекомендация для него: сменить мозги. И таких вот "крутых вебмастеров" еще туева хуча!
McRuslik вроде. По-моему, как раз о таких беспокоиться не надо (ну разве что о том, что они портят генофонд человечества), всё равно его странички никто ни парсить, ни глазами смотреть не будет: полезного контента он делать точно не может.
Нет, так не будет. Стандарт не привязывается к развитию IE, он фиксирует текущее статус-кво, а то, что это соответствует IE — просто текущий факт. Но новый контент не будет писаться по этим правилам. Не даст валидатор, не даст пропаганда и не даст общий уровень веб-разработки, который с тех пор вырос. И Microsoft не будет специально делать кривой браузер.
Предлагаете еще пяток лет уговаривать себя, что это "вот уже скоро будет"?
У того комментатора та же ошибка, что и у Вас: вы считаете, что синтаксис языка попустительствует к написанию коду. Это не так, язык не может никого ни к чему принудить, что очень явно показал тот же IE, который спокойно обрабатывает XHTML по HTML'ным правилам.
Поэтому суть нового стандарта в том, что он хорошо написан, и дает браузерам возможность физически реализовать его правильно, чего не делал XHTML, потому что правильная реализация его убивала рыночные перспективы браузера, и никто на это не пошел. А синтаксис — второстепенный вопрос, это надо понять...
А я вот чего не пойму - почему никто не ноет, что в синтаксисе, скажем, Java, ему приходится ставить запятые между параметрами методов и завершать строки знаком ";". Казалось бы, давайте возмутимся, почему это Java сама за нас не додумывает что мы имели в виду?!! А если кто-то среди программистов начнёт ругать "лесенку" кода и все эти "жуткие неудобства", другие программисты, с разной степенью грубости просто дадут понять: "Парень, ты не ту профессию выбрал!".
Ни у кого не возникает мысли ругать язык программирования за то, что у него есть строгий синтаксис, но почему-то "Язык гипертекстововой разметки документа", который, естественно, такой же машинный, как и Java, не понравился из-за каких-то надуманных "драконовских правил". Чушь! Ребята, вёрстка - это не "rocket science", и правила эти - ну ни разу не драконовские!
А если захотелось простоты - то и писать в комментариях давайте тоже начнём в стиле "падонкаф" и без соблюдения пунктуации - ничего, поймут ведь и так!
Я полностью согласен с теми, кто утверждает, что отказ от строгих правил XHTML - это возврат в средневековье. Даже более, в каменный век.
Нельзя культуру вёрстки, только-только начавшую подниматься на должный уровень, только признавшую определённые авторитеты и стандарты, вновь отбрасывать назад. И если кухарок, верстающих сайты, станет меньше, надо будет только радоваться. Кухарки сейчас вполне могут сделать сайт конструкторами - благо их теперь немало расплодилось, и качество у многих весьма достойное.
Лично у меня теперь пропала вера в светлое будущее веба и особенно сильно пошатнулось доверие к W3C. "Не надо прогибать изменчивый мир, пусть лучше он нас сам прогнёт"... :( Отвратительно, коллеги.
Скажем так, у меня есть весомые основания считать, что как раз к супу в вернемся. Если синтаксис языка строг, то пургу писать ты просто физически не сможешь ибо работать ничего не будет или повезет и будет как-то работать. Если язык позволяет писать абы как, то и будут писать абы как да еще и покрикивать на косяки в работе страниц, что это виноваты кривые руки у разработчиков браузеров, отличных от IE. А оно нам нужно?!
А что касается IE, то он он сильно много додумывает... ну очень сильно и очень много, а это неправильно!
Когда-то он действительно разрабатывался для людей, а не для программистов :) Беда в том, что разросся он до весьма немалых размеров и теперь, никто кроме программистов им напрямую не пользуется. Но прежний груз таки остался.
Основная суть в том, что правила эти никогда по-настоящему не работали.
Культура вёрстки — прежде всего "чтобы работало по стандарту", вместо "чтобы просто работало". А тяги общества к этим самым стандартам уже не отнять. XHTML сделал своё дело :)
Собственно, вся эта байда с w3c как раз и задумывалась для приведения в порядок архаичность HTML4, если я правильно понял.
К тому же, XMLный синтаксис HTML5 никуда не девается. Просто остаётся необязательным, как и прежде.
Я считаю, основная суть в том, что если народ вокруг повально балуется "травкой", это не означает, что наркотики пора легализовывать. Как и в жизни, это означает лишь недостаток пропаганды и воспитания.
Есть и сугубо техническая сторона - неважно, что было в прошлом, сейчас HTML - это в первую очередь машинный язык. Введение вольностей в правила его записи означают, в первую очередь, усложнение его разбора. А это - усложнение написания парсеров, плюс, как следствие, увеличение числа багов в них, чему обрадуются разве что только вломщики. Кроме того, для такого парсера возрастают потребности в вычислительных мощностях, а это большой минус для портативных устройств, вроде сотовых или КПК.
XHTML позволил универсализировать всё. Несложные правила (это лучше кучи "а можно ещё вот так написать"), позволили использовать один и тот же XML-парсер на все случаи жизни. Добавьте сюда ещё XSLT и получите картину полного вселенского счастья :) Насколько упростилось бы пресловутое "вебдванольное" связывание всех со всеми! Насколько меньше было бы багов! Динозавры всё равно вымерли бы, никуда они не делись. Ясное дело, всё это случилось бы не вот завтра, но произошло бы рано или поздно!
Вот эта необязательность и пугает. Опять приведу аналогии из жизни - есть некоторые "нормы морали" - никто не заставляет вас уступать место бабушке в задних рядах трамвая, но вы это делаете. Потому что знаете, что это по-человечески, что это - правильно. Хотя сами ощутите, что значит старость, ещё очень нескоро. Стандарты очень похоже действуют на людей, как и "нормы морали". И к нормам этим надо подходить очень ответственно, чего я теперь в политике W3C как раз и не вижу.
А разве не ясно - что парсер будет ОДИН? Т.е. не так, как сейчас - кто как хочет - так и парсит. А просто один парсер, который, в отличии от XHTML будет позволять писать неправильно. И если человек так напишет - все везде будет строится одинаково.
PS. "вломщики" - это сильно :-D
Вряд ли один. Скорее, планируется сделать единственным правильный метод парсинга :) В отличии от сегодняшнего положения вещей.
Стандарт вообще ни к чему обязывать не может. Обязывают создатели реализаций (производители броузеров), а они, как раз, обеими лапами За.
P.S. что-то идея HTML5 всё больше и больше притягивает :)
A pochemu vot eto http://www.w3.org/html/ sverstano na xhtml strict? imho, ne vyjdet nichego horoshego iz html5.
Только история может установить, чьё imho было без h ;)
Zigzag
А из чего выйдет? :) От XHTML считай что отказались. У нас веб-сайты уйдут в небытие? :D
Чукча не читатель, чукча писатель? HTML5 не отменяет синтаксиса XHTML. В нём есть как SGML синтаксис, так и XML.
Maximbo
Ну, имелось ввиду, что будут определены все возможные "неподалидки" и обработка их будет для конечного пользователя одинакова.
"Полностью одинаковым" он не будет все равно - на разных языках свои реализации. Но результат будет одинаковым.
Murkt
Отменяет. Посмотри хотя бы на возможные доктайпы. XHTML 1.0 он ОТМНЯЕТ.
Так :-).
Уважаемые, судя по всему, все высказали свои точки зрения, и по нескольку раз. Призываю оба "лагеря" перестать обращать противника в свою веру, потому что те, кто сумел услышать доводы, их уже услышал, а остальным призывы все равно не помогут.
Я так понимаю, обсуждать все-таки хочется :-). Тогда добро пожаловать сюда: http://softwaremaniacs.org/forum/viewtopic.php?id=478
Ссылка в тему (англ.):
http://www.digital-web.com/articles/html5_xhtml2_and_the_future_of_the_web/
Любой супервалидный код на стороне сервера делается невалидным на стороне клиента. По той простой причине, что web-content - это поток, а не статичный блок данных. Возможно, он загрузится до конца (и станет валидным). А, возможно, пользователь не захочет ждать полной загрузки всяких баннеров, комментариев, счётчиков (и прочей пурги), а банально нажмёт STOP.
Так речь о том и идёт - что ни один стандарт не рассматривает web-документ как поток.
В итоге реальные броузеры не в состоянии воспользоваться плюсами "простого парсинга", т.к. не могут ждать полной загрузки до начала отображения.
Наконец-то один человек обратил внимание на то, на что его не обратили другие - хотя мы каждый день это видим на экранах наших браузеров :)
Хотя, если принять строгие правила обработки незакрытых тегов, то эта ситуация (как мне кажется на первый взгляд) должна очень просто разрешаться. Например, считать последний открытый тег закрывающимся в месте разрыва соединения, и так далее вверх по дереву. Это, конечно, если тэги нельзя перекрывать ))))