Подписаться через RSS2Email.ru
|
Показать HTML | Показать BBCode
Обсуждение разметки BBCode
Эта страница посвящена не xBB и не какой либо другой реализации BBCode. Если в комментариях и зайдет речь о какой-либо конкретной реализации (xBB, rBB, phpBB и т.п.), то только в контексте ее отношения к BBCode, как таковому.
Предлагаемые темы к обсуждению:
- Что в BBCode является общепринятым, а что нет.
- Различия версий BBCode и возможность их классификации.
- Рекомендации разработчикам конвертеров BBCode.
- Возможность унификации/спецификации разметки BBCode.
Цели обсуждения:
- Выявить основные точки зрения по обсуждаемым вопросам.
- Выяснить, какие шаги можно предпринять к дальнейшему расширению и углублению дискуссии о спецификации BBCode, и имеет ли смысл это делать.
Участие в обсуждении может принять любой желающий, имеющий что сказать по теме. Посты, не относящиеся к теме, будут удаляться.
Последнее редактирование: 2008-04-18 12:17:59
Метки материала:
BBCode, BB-code, BB-код, BB-коды, ББ-коды, HTML, разметка, tags, tag
68 комментариев
dima
Начну тему. Буду потихоньку постить сюда свои мысли о BBCode. По мере того как вспомнятся
Во первых. Назначение BBCode:
- Упрощение верстки:
- Сокращенное написание тегов (
[center], [color] и т.п.).
- Комплексные теги (есть ли более понятное название?), такие как
[quote] и [php], заменяющие целые нагромождения тегов HTML.
- Удобная вставка смайликов.
- Автоматическая нормализация кода. Как ни верстай, вывод все равно будет валидным.
- Безопасность. Можно предоставить кому угодно без опасения о вредоносности кода.
Поправьте/исправьте, если что упустил.
Гость Sam
Ещё забыли: дополнительная прослойка между текстом и разметкой. Очень и очень помогает при изменении конечной разметки для пары тысяч статей.
Стандарт — да, нужен.
Я у себя ( http://rmcreative.ru/) в данный момент использую несколько отличную от xBB разметку.
Тот же код намного удобней размечать одним тэгом, а не набором вроде [php]. У себя я реализовал это так:
[code=php], [code=css], [code=html]
dima
Ещё забыли: дополнительная прослойка между текстом и разметкой. Очень и очень помогает при изменении конечной разметки для пары тысяч статей.
Sam, мне кажется, что Вы затронули непростой вопрос:
Следует ли унифицировать BBCode только на уровне семантики, или также и на уровне производного HTML-кода? Если второе, то насколько жестко: теги, атрибуты, классы?
Мое имхо:
- На уровне семантики, унификация однозначно нужна. Например, все привыкли к тому, что тег
[code] представляет собой блок кода, а не строку кода, как тег <code> в HTML. Лично мне это кажется неудобным, но вынужден придерживаться общепринятой трактовки.
- На уровне HTML, унификация лично мне кажется желательной (люблю порядок
), но практически нереализуемой. А раз так, то имеет смысл извлечь из этого пользу. Поэтому соглашусь с вами:
BBCode предоставляет удобную возможность изменять разметку HTML не изменяя авторских текстов.
P.S. xBB поддерживает синтаксис [code=php], [code=css], [code=html4] и т.п. Теги [php], [css], [html4] и т.п. являются сокращениями для первых конструкций.
dima
BBCode часто называют разновидностью HTML. Это неправильно.
Отличия BBCode от HTML- В BBCode отсутствует вершина дерева тегов. Если все теги HTML обязаны быть вложены в <html>, то для BBCode это не так. Он может вообще не содержать тегов.
- Написание тегов BBCode и тегов HTML различно. В первом теги заключаются в квадратные скобки, во втором - в угловые. В первом широко используются конструкции вида [имя_тега=некоторое_значение]. В HTML такие конструкции являются ошибочными.
- Наборы тегов в BBCode и в HTML различны. В BBCode есть теги, которых нет в HTML и наоборот. Некоторые теги одинаково называются, но имеют различное семантическое значение, (тот же тег
[code]).
- Мнемоники в BBCode и в HTML различны. Если в HTML все мнемоники имеют вид &чего-то; и обозначают некоторый символ, то в BBCode мнемоники могут иметь любое написание, и несут, как правило, семантический смысл (смайлики).
- Назначение у BBCode и HTML различно. HTML является разметкой для визуального представления документа. BBCode является разметкой для последующей конвертации в другой формат.
Все перечислил?
~updated~
Вспомнил еще два отличия:
- В HTML любая последовательность пробельных символов считается пробелом. А в BBCode все пробельные символы сохраняются. Два рядом стоящих пробела означают именно два пробела, а не один; перенос строки приводит к переносу строки.
- В BBCode есть такое понятие, как "автоматические ссылки". В HTML его нет.
Гость Sam
На уровне генерируемой разметки унифицировать, думаю, не стоит. А вот на уровне семантики — определённо стоит.
dima HTML является разметкой для визуального представления документа.
Ну уж нет! HTML — семантика.
dima А в BBCode все пробельные символы сохраняются.
У меня не сохраняются.
dima В BBCode есть такое понятие, как "автоматические ссылки". В HTML его нет.
Это ещё откуда? Не имеет это отношения к BBCode.
dima
Sam dima HTML является разметкой для визуального представления документа.
Ну уж нет! HTML — семантика.
Неправильно я высказался. Имел в виду, что HTML предназначен для обработки агентами пользователей, которые его визуализируют. А BBCode вообще не доходит до клиента, конвертируется в HTML на сервере.
Sam dima А в BBCode все пробельные символы сохраняются.
У меня не сохраняются.
Думаю, что это отступление от общей практики. Думаю, что большинство пользователей BBCode привыкли именно к тому, что форматирование их текстов пробедьными символами сохраняется.
Sam dima В BBCode есть такое понятие, как "автоматические ссылки". В HTML его нет.
Это ещё откуда? Не имеет это отношения к BBCode.
Сами по себе автоматические ссылки не являются частью BBCode. Но во всех известных мне реализациях они поддерживаются. А для HTML я не видел ни одного браузера, который бы их поддерживал.
Гость Sam
dima Думаю, что это отступление от общей практики.
Ну, не знаю, вставлять кучу nbsp по поводу и без — извращение.
dima Но во всех известных мне реализациях они поддерживаются.
У меня не поддерживаются.
dima я не видел ни одного браузера, который бы их поддерживал.
А они и не должны.
dima
Sam Ну, не знаю, вставлять кучу nbsp по поводу и без — извращение.
Может быть и так. Но речь ведь идет об особенностях BBCode. О том, что ожидает пользователь от BBCode. Является такое поведение извращением или не является - уже другой вопрос.
Sam У меня не поддерживаются.
Зато поддерживается в большинстве других реализаций. В том числе и во всех распространенных форумных движках, которые и задают де-факто стандарт BBCode. Давайте отличать общепринятое от частного.
Sam dima я не видел ни одного браузера, который бы их поддерживал.
А они и не должны.
Никто и не утверждал, что они должны. Более того, я совершенно согласен, что они не должны. Речь шла об отличиях BBCode от HTML. Одно из них следующее:
Большинство конвертеров BBCode преобразуют (хотя это поведение, как правило, можно отключить) адреса ресурсов в гипперссылки, тогда как ни один из "конвертеров" (т.е. агентов пользователей) HTML не станет этого делать без явного указания в HTML-коде.
dima
Особенности BBCode- Теги в квадратных скобках.
- Расширяемый набор тегов. Существует "джентельменский набор" тегов, помимо которых может быть создано неограниченное множество других тегов.
- Сохранение форматирования пробельными символами. Хотя встречаются реализации, в которых это не так. (Например, реализация Sam-а)
- Смайлики. Хотя в некоторых реализациях их преобразование является опциональным.
- Расширяемый набор мнемоник (смайликов). Полностью аналогично тегам.
- Автоматические ссылки. Хотя в некоторых реализациях автоматическая обработка ссылок является опциональной.
- Отсутствие пользовательских ошибок. Это означает, что если тот или иной символ или синтаксическая конструкция не могут быть обработаны как правильная конструкция BBCode, то они будут выведены как есть. Считается, что если пользователь ввел что либо "не правильно", то он хотел ввести именно так, и нужно вывести текст именно так, как ввел пользователь. Никаких сообщений об ошибках не выводится, так как в BBCode никаких ошибок не существует.
Например, если в тексте встретился символ "[", за которым не следует имени тега, то обработчик не должен воспринимать его как спецсимвол и должен просто вывести его без сообщения об ошибке.
То же касается и правильно написанных тегов, там где они не должны обрабатываться. Например, внутри тега [code].
Обработчик BBCode не должен пытаться быть умнее пользователя и должен преобразовать его текст только в той части, которая оговорена правилами. А все, что не оговорено правилами, должен выводить, как оно было введено.
Гость Sam
Смайлики к BBCode не имеют никакого отношения, также, как и автоссылки. В тех же форумных движках (если я правильно помню, то vBulletin) всё это реализовано отдельно.
Оставьте свой комментарий:
|