Как стать автором
Обновить

Комментарии 91

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

XML создавался для более простого программного парсинга структур данных (и многого другого, с чем этот ML справляется на 5). Но в этой статье я говорю о том, как эту информацию воспринимает человек.

Я — человек, который постоянно работает с XML. И мне намного приятнее читать такой HTML, который я описал в этой статье — потому что он для меня яснее.
я же не говорю как писать хмл. я говорю, что для человека который работает с хмл такая форма записи режет глаз. делаю выводы на своем опыте. судя же по Вашему опыту — я погорячился со словом «любой». надо заменить на «многие» :)
Расширяйте свой кругозор. Именно для этого эта статья и писалась :).
причем тут кругозор? я прекрастно знаю, что по стандартам можно так писать. я говорю о том, что мне это не кажется красивым, скорее наоборот
Не пользуйтесь, но и не мешайте другим.
да как же я им помешаю, если б и хотел? :). я просто спорю с утверждением о красоте этого подхода
Тогда смысл вашего спора мне не ясен.
Краткая версия спора:
— Я тут в Gnome откопал интерестную штуку.
— У… Я тут работал в Windows — по этому они мне режут глаз.

Зачем говорить в теме о том, чего эта тема не касается???
Печаль. Даже абстрагируясь от xml и xhtml…

Как вы, не закрыв теги, собираетесь разрешать неоднозначности?

например
<center>
<p> текст 1
<p> текст 2

Мы что отцентрируем? :) один тег или два? :) А что делать, если нужно наоборот? :)
Вы совершенно не уловили то, о чём я написал.

<center> ОБЯЗАТЕЛЬНО должен закрываться! Это стандарт.

Теги, которые можно не закрывать я описал выше. И то не все и не всегда (например, THEAD, в зависимости от использования).
НЛО прилетело и опубликовало эту надпись здесь
Вы считаете это красивым? Ну не знаю, имхо это сугубо дело вкуса.
Вот взять например ваш первый пример — гдядя на него возникает вопрос — где заканчивается <p> и не является ли его присутствие ошибкой. Надо вспоминать может ли select быть внутри p или нет (соответственно это пустой параграф-ошибка или нет), дальше надо искать где первый тэг, который не может быть в p и только после этого становится понятно где-же он заканчивается. И всё это для чего — для экономии 4 байтов? Ну уж нет…

Кстати IE в некоторых ситуациях отрисовывает закрытые и не закрытые P по разному, с разными нижними паддингами.
В общем, моё личное мнение — это не красиво и неудобно, за небольшим количеством исключений, например меню из однословных пунктов. Но я и в таких случаях закрываю.
С непривычки — так действительно и кажется. Попробуйте — вам понравится.
А IE всё хорошо делает — ненадо старичка обижать :). Просто необходимо знать нюансы его работы, которые учитывать.

p.s. <p><select> никто вам не мешает сделать (не оставив пустоту) — в том числе и закрыть (если вы хотите). Правильнее было оформить этот пример с помощью DIV (меньше вопросов-бы возникло :) ).
Ну что значит с непривычки? Я и так и так пробовал. Пришел к выводу, что чем жестче система — тем она понятнее и эффективнее работает. И тем легче в нее вникнуть. Это вообще по жизни, html — частность. Поэтому я отношусь к тэгам как к скобкам — должно быть начало и должен быть конец. Точка (для меня). И вообще относится к коду «эстетически» — это не моё, я им не любуюсь, и стараюсь кодить так, чтобы в первую очередь было как можно меньше вопросов и нюансов при его прочтении.

Кстати, а что вы будете делать, когда вам понадобится этот же код, но в xhtml? Перелопачивать будете всё (и тэги, кстати, в верхнем регистре)?

А еще странно, что вы с таким подходом не вопользовались необязательностью тэгов <html> и <body>, их вовсе можно не писать :)
Это ваше право :). Мне нечего добавить.
Я пользуюсь тем, что описал — мне удобнее так.

А если мне понадобится код в xhtml, то:
1) Я изначально буду разрабатывать код в нём :).
2) Плюс ко всему, есть библиотеки (tidy, например), которые сделают это для меня. Я потрачу лишь 1 минуту написания кода на PHP.
Я с самого начала написал, что это дело вкуса. Вам так удобнее? — Да. Это по правилам html? — Да. Никаких проблем. Мы просто изложили друг другу свои точки зрения на поднятый вопрос и каждый остался при своем :)

Вы, кстати, не в курсе сказываются ли незакрытые тэги на производительности? Понятно, что разница там будет копеечная, но она точно будет потому что браузеру приходится реализовывать более сложную логику парсера разметки при построении DOM. Мне просто интересно, нигде таких тестов не встречал.
Нет, подобных тестов я не встречал.
Я думаю, что не стоит пытаться в этом искать какой-либо выгоды — скорости парсинга или количество КБ на страницу. Она скорее всего будет совершенно не ощутима.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
>> Поэтому знать об особенностях той неидеальной системы, которая работает, все равно надо (а пользоваться ли этими нюансами или нет — каждый решает для себя)

Разумеется я о них знаю и не использую — это помогает не держать в голове постоянно информацию, которую нет необходимости там держать :). В частности мне нет необходимости постоянно помнить какие тэги закрывать, необязательно потому что я закрываю их все.

>> А вы всегда пишете в своей разметке? ;)

Последнее время — да, во-первых потому, что мне не часто попадаются таблицы у которых вовсе нет заголовка (т.е. без thead), во-вторых потому что даже если его сейчас нет — потом его будет добавить проще. В третьих — через эти неприметные и не часто используемые тэги очень удобно рулить CSS-свойствами ячеек расположенных в разных секциях таблиц, и если сразу писать tbody, то при добавлении thead не нужно перелопачивать css (это к «во-вторых») :)
НЛО прилетело и опубликовало эту надпись здесь
жёстче и понятнее — это ещё с какой стороны посмотреть: что html позволяет и закрывать и не закрывать — не очень хорошо. С другой стороны, концепция «вешек» для человека чаще естественней: если в списке или выборе мы расставляем только разделители элементов — никому в голову не взбредёт вписать между <li> или <option> какой-нибудь комментарий для пользователя.
Суть в том что при использовании xHTML их закрывать обязательно для валидации
Взгляните на DOCTYPE, если вам везде кажется Xhtml.
Мне не хера не кажется, я сказал где их надо закрывать для валидности а не сказал что бля чувак мы тут xHtml тормошим!!!
НЛО прилетело и опубликовало эту надпись здесь
«End tag: optional»

Или епт что бы вопросы не возникали такие как «Э а я помню гдето закрывать надо» мне нельзя было написать что да закрывать надо но тока в соседнем доктайпе!
НЛО прилетело и опубликовало эту надпись здесь
Я не за холивар, мне похер кто и как пишет HTML-код…
но извините, от ссылки и то что это таки РЕАЛЬНО находится в спеке HTML5, я просто ох&ел! Просто ох$#л от того что ЭТО есть и разрешено спекой…

PS: можете минусовать или не минусовать — я не холиварю, для меня просто это было РЕАЛЬНОЙ новостью.
Закрывающие тэги — это ещё что!..

В HTML 5 тэг <html> можно даже не открывать.

В HTML 5 тэг <head> можно даже не открывать.

В HTML 5 тэг <body> можно даже не открывать.

При определённых условиях, разумеется; но не при очень строгих.
НЛО прилетело и опубликовало эту надпись здесь
файл побился — это из области фантастики. кривой хтмл может прийти только из кривых рук. хтмл не бил по этим рукам — они и не думали выпрямляться, продолжая клепать непотребство.

эта грамматика мне как кость в горле, когда я открываю сорцы таких вот продвинутых страничек. спасибо, мне и так есть чем голову забить, кроме всяких грамматик…
НЛО прилетело и опубликовало эту надпись здесь
радуйтесь, xhtml сейчас очень редко можно встретить — почти у всех в хэдерах text/html. даже на тут, на хабре, доктайп xhtml а контент text/html.
Благодарю за корректное употребление слова «хэдер». Да станет это добрым примером всем тем невеждам, которые пишут либо «хидер» (что прямо противоречит правильному произношению), либо «хедер» (а это слово ужé существует и означает еврейское вероисповедное училище).
а «контент» я правильно употребил?
Кажется, тоже да.
лучше «содержимое»
Сатиршимайе… :)

PS: от вам делать нефик еще о грамматике спорить… вы еще поспорьте как правильно ХТМЛ или ЭЙЧТИЭМЭЛ, писать… :)
лингвистическое недообразование не дает мне покоя, увы :(

правильно ЯРГТ, если считать, что это аббревиатура («язык разметки гипертекста»), или Эйч-Ти-Эм-Эл, в современном мире можно оставить и HTML :)
Поблагодарите и меня сударь: хэдер, хэдер, хэдер. И еще чуточку: хэдер, хэдер!
Ехал хэдер через хэдер :)
какой «хэдер-хидер-хедер»? (по правилам транслитерации правильно «хедер», менее желательно «хэдер»)

имхо, самый правильный вариант «заголовок» ;)
Допустим, «header» переведём словом «заголовок».

Как в том же тексте переводить <head>, <title>, «heading» (<h1>, <h2>, <h3>...)?
… голова, заголовок, головастенький, ха1, ха2, ха3, троеточие, скобка, знак вопроса… :)
В данном случае переводить не надо и транслитерировать тоже. Если используете понятие, географическое название или имя, то надо или самостоятельно транслитерировать, или воспользоваться устоявшимся вариантом.

допустим, вы же не арреями и стрингами оперируете в языке, а массивами и строками, хотя некоторые умудряются :)
переменные: $massiv =… $stroka =… — неудобно как-то, посему юзаю таки $array и $string… :)
PS: шудк :)
НЛО прилетело и опубликовало эту надпись здесь
а-а-а! мицголы размножаются! >_
То, что браузеры умеют исправлять ошибки неграмотных HTML-кодеров — ещё не значит, что так нужно делать. Это исторически сложилось, что из-за кучки людей, которые не закрывают теги, браузеры всё ещё умеют закрывать эти теги — в своё время это было сделано для того, чтобы они не переписывали свой код.

Лично для меня — так код должен быть строгим: автор, попробуйте в любом языке нарушить синтаксис. Как себя поведёт комплятор/интерпретатор? Ну? Вот-вот. С HTML должно быть так же: пропустил где-то символ — а потом ищи, почему же у тебя криво: если бы браузер отказывался обрабатывать well-formed HTML — разбирать его глазами было бы гораздо проще.

А то, что Вы написали — это НЕ УДОБСТВО, это — ЛЕНЬ!
Кстати, когда мне в своё время объясняли HTML лет 10-12 назад, я именно из-за этого его и не понял, потому что объясняющий был из той же категории, что и топикстартер: даже он не смог мне объяснить, почем тут надо закрывать, а тут можно не закрывать.
Вы не знакомы со стандартами W3C — и не разу не читали их сайт.
курица таки была первой ;-) сначала появились браузеры, а потом стандарты узаконили их поведение… и пока так будет продолжаться (косо поморщился на хтмл5) — светлого будущего нам не видать…
НЛО прилетело и опубликовало эту надпись здесь
а при чём тут sgml?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" «www.w3.org/TR/html4/strict.dtd» <
выдаёт ошибку

что ж он не закрыл декларацию самостоятельно?
НЛО прилетело и опубликовало эту надпись здесь
угу, а теги — они где? в xml и html и других производных…
а в самом sgml — только декларации и есть…
НЛО прилетело и опубликовало эту надпись здесь
разумеется… и эти правила описываются на языке sgml ;-)
НЛО прилетело и опубликовало эту надпись здесь
насколько мне известно, стандарта html1 не было, но был(и) браузер(ы) которые понимали тэги. потом собрались и формализовали синтаксис используя sgml.
НЛО прилетело и опубликовало эту надпись здесь
Как мне знакомы те люди, которые утверждают вслепую.
НЛО прилетело и опубликовало эту надпись здесь
«Well-formed» может быть что угодно — верно составленное, оформленное, корректное, это не обязательно должен быть код. Мне жаль Вас, если Вы принимаете это словосочетание только применительно к XML. Я его употребил потому, что не смог сходу подобрать более яркое и понятное на русском. А для Вас оно, видимо, слишком яркое, раз целый абзац своего опуса Вы посвятили этому словосочетанию — закрыв глаза на то, что, как я предполагал, для Вас лично могло оказаться чудовищным: отказ обработки документа с ошибкой.

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

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

Для Вас это всего лишь скорость разработки, как я понимаю, если Вы в дальнейшем используете Tidy; я же использую редактор, который сам закрывает мне теги. Я не пишу лишнего — по скорости, думаю, всё это сопоставимо. Тогда, думаю, для разработки Вам больше всего подойдёт HAML.

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

Думаю, дальнейшие рассуждения/осуждения уже уходят за рамки топика.
НЛО прилетело и опубликовало эту надпись здесь
Я занимаюсь валидным HTML уже более 4х лет.
У меня ни разу не было проблемы с тем, что где-то (по оплошности) не был закрыт тег. Тем более генеря HTML программно.
Может быть это и красиво, и, что более весомо, даже экономит трафик, но если когда-то зачем-то кто-то решит перейти на XHTML, то он автора таких финтов ушами проклянёт. Такой код существенно сложнее поддерживать из-за его непредсказуемости.
Если кто-то когда-то решит перейти, то там возникнет намного больше других проблем.
А HTML в XHTML преобразуется легко — tidy в помощь.
НЛО прилетело и опубликовало эту надпись здесь
Я ТАК И НЕ ПОНЯЛ В ЧЁМ КРАСОТА НЕ ЗАКРЫТЫХ ТЕГОВ. ЗАТО ПИСАТЬ ИХ В ВЕРХНЕМ РЕГИСТРЕ ОЧЕНЬ ЗДОРОВО! ВЫ НЕ НАХОДИТЕ? ЭТО ВЕДЬ ТАК КРАСИВО!
ЕщЕ МоЖнО ВоТ ТаК ПиСаТь и вместо закрывающего тега ставить кучу знаков восклицания. Это еще круче и валиднее.
Если встать на ролики и поехать с закрытыми глазами — это будет красиво. Вот только результат непредсказуем. Вы предлагаете тоже самое. Подсветку синтаксиса поэтому и придумали, чтобы важное в глаза бросалось, но все теги были на месте.
А бывает еще такая верстка (HAML):

%p
  Некий текст
  %a{ :href => '#' } Ссылка

%div
  %div
    А еще вот так и много еще как :)


о да, после хамла сложно любить верстку в HTML :)
Именно. С хамлом можно практически забыть о закрывании тегов.
Но это ещё не совершенство. Высший пилотаж — не открывать теги.

Я верю, в HTML 6.0 PlainText можно будет выделять элементы только отступами и переводами строк. А HTML 7.0 Bustrophedon с его мощным синтаксическим анализатором сможет автоматически выделять абзацы, разделы, списки и наконец позволит писать в одну строку (морфологический анализатор, подразумеваемый версией 6.1, избавит человечество от пробела, и внизу клавиатуры наконец освободится место для быстрого запуска GTA XI, HalfLife VIII и GoogleDocs DoubleBeta 2030).
Тогда придется клавишу прыжка переназначать :(
У меня пробел переназначен на приседание, а правая кнопка мыши — на прыжок. Оружие переключаю боковыми клавишами мыши, которые под большим пальцем.

Рекомендую попробовать: это удобно.
НЛО прилетело и опубликовало эту надпись здесь
Если в дизайне есть заголовок, ложим его в thead, (ну и/или футер tfoot) и ничего не остаётся сделать, кроме как и tbody открыть.
Ну а если нет ни заголовка, ни футера — то тогда и не отркываем tbody. )
Дерзко и с вызовом.
Тут даже можно вспомнить один из канонов у-шу: «красиво — значит правильно».
Если позволяют спецификации и если это конечно тебе удобно, то можно и так верстать.
Но надо ли?
Для быстрой разметки в линейном тексте (статья, например), можно воспользоваться. Мне это даже такой подход слегка (именно подчеркну что слегка) напомнило LaTeX.
Но для полноценной вёрстки закрывать теги на мой взгляд просто необходимо. Чтоб окончательно не запутаться что в чем.
Недаром вторым часто используемым словосочетанием со словом «тег», является «вложенный тег», (на первое место я выделил бы «закрывающий тег»). Принебрегать ни первым ни вторым, я бы не осмелился. Хотя бы потому, что это каноны.
Конечно для расширения кругозора статья неожиданна и может быть даже полезна некоторым, потому что любая даже нелепая на первый взгляд идея, даёт повод задуматься и, может быть в дальнейшем, чем то поможет в работе.

ИМХО.
Спасибо за внимание! :)
НЛО прилетело и опубликовало эту надпись здесь
Это никакой не вызов.
Это констатация факта о стандарте, который позволяет так делать и несколько примеров, почему это более читаемо.
Хорошо что так можно делать, без этого небыло бы современного веба, ведь его построили и создали не одни профи.
Простенький сайт — может создать любой, битая страница — всё равно откроется, переконвертить какие-то тексты в инет можно легко…

Но если ты разработчик — надо делать по уму.
Это как гнать самогон и производить водку.

«Незакрытый тег — это как незастегнутая ширинка: вроде и штаны не падают, но что-то с окружающими людьми не так.» (с)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории