Смысл смысла
Эта неделя, видимо, посвящена баянам во всех проявлениях. Из последнего — на Хабре появилась череда постов-перепечаток с разрешения Никиты Селецкого. Тех самых, что и так часто встречаются в поиске по сабжу. И, что абсолютно естественно, в этих кросспостах (в начале этого — ссылки на три остальные, читать обязательно) засветился мини-холиворчик по поводу семантики и структуры HTML.
Маленький — потому что тема эта уже наскучила. Да, организация структуры даже XHTML лажает по сравнению с XML и базами данных. Да, браузеры лажают и едят что угодно. Да, роботы и поисковики пока эту семантичность не едят. Да, для того, чтобы вымудрить какой-нибудь спецэффект, убивают структуру и семантичность. Да, и в самих рекомендациях (запомните — W3C не делает «стандарты», она делает рекомендации — я с этим наплакался еще когда диплом писал по SQL) много огрехов, и текущие версии не удовлетворяют полностью чаяниям Семантической Паутины. Да, для поддержки семнтики пришлось выдумывать микроформаты. Да. Да. Да.
Но разве это причины не стремиться к эволюции Веба?
HTML — это разметка текста, так почему на многих сайтах элементы оформления заключены в <p>, а основной текст, наоборот, выпадает из абзацев? Почему код оформлен не <code>, а каким-нибудь <em>?
Для переменных какой-нибудь программы, упоминаемых в тексте, есть <var> (мне кажется им можно выделять и функции, упоминаемые в обычном тексте, и выделение их в коде, для последующего форматирования). Для текста, набранного пользователем, есть <kbd>, что, в отличие от <code>, лучше подойдет для команд консоли. А вот результаты программы надо оборачивать в <samp> (для конслоли, получается, чередовать).
Блочный <pre> же, если вспомнить комментарий от Jehy, это просто преформатированный текст, который может быть как угодно оформлен, который может содержать что угодно. Он просто сохраняет все табуляции и пробелы, так что может использоваться как для кода, бланка документа, стенограммы телепрограммы, так и для текста из книги — риальни чего угодно.
Цитаты могут быть оформлены как строчно, с помощью <q>, так и блочно, с помощью <blockquote>. Здесь есть определенная проблема — как указывать <cite>. В случае блочной большой цитаты я предпочитаю думать, что надо оставить выделенное авторство цитаты прямо внутри блока <blockquote>. По аналогии с <legend>, который размещается внутри <fieldset>, чтобы точно была определена взаимосвязь между цитатой и источником.
И вот после того, как текст не размечен даже этими тегами, кто-то осмеливается заявлять, что текущий HTML — это только оформление.
Конечно, все теги надо определять в CSS, расставлять ручками, потому как нет автоматических средств... и еще это во многом бесполезно, т.к. поисковики слабо реагируют на такое выделение, для пользователя же почти без разницы...
Но я повторюсь, время неумолимо течет дальше. Каждый шаг на пути структуризации так расплодившегося в Сети контента — это шаг в будущее.




А в blockquote есть атрибут cite :-) Только «простому смертному» он не виден. Можно, конечно, поизвращаться с CSS, чтобы вставлять в текст значение этого атрибута, но будет ли это красиво?
Есть, но, как ты и сказал, он не отображается браузерами. В принципе, можно попробовать его вытащить как blockquote[cite], но не думал даже, как :).
К тому же, это только ссылка — а название источника в title засовывать? Как-то странно получается.
Да и так — странно. Если отталкиваться от XML, то логичней было, если в блоке было три тега — источник, ссылка, цитата. Перемудренно как-то выглядят и атрибуты, и помещение cite в самой цитате. Но последнее я пока вижу более правильным, ведь blockquote — блочный, а cite — инлайновый.
<cite>Билл Гейтс</cite> сказал: <q cite="microsoft.com">640 K ought to be enough for everyone</q>.
Или
<p><cite>Билл Гейтс</cite> сказал:</p>
<blockquote cite="microsoft.com">640 K ought to be enough for everyone</blockquote>.
Имхо так.
А в эпиграфе?
Но cite — инлайновый, получается, что тоже в p надо забивать, получается, что источник и сама цитата разделены. Если в q это работает, то здесь... не знаю, выглядит плохо.
(в комментариях можно код заключать
<code>или {[ без проставления entity.)