xBB – бесплатные скрипты PHP и доки для вебмастеров

Подписаться через RSS2Email.ru

Показать HTML | Показать BBCode

Обсуждение разметки BBCode

Эта страница посвящена не xBB и не какой либо другой реализации BBCode. Если в комментариях и зайдет речь о какой-либо конкретной реализации (xBB, rBB, phpBB и т.п.), то только в контексте ее отношения к BBCode, как таковому.
 
Предлагаемые темы к обсуждению:
  1. Что в BBCode является общепринятым, а что нет.
     
  2. Различия версий BBCode и возможность их классификации.
     
  3. Рекомендации разработчикам конвертеров BBCode.
     
  4. Возможность унификации/спецификации разметки BBCode.

Цели обсуждения:
  1. Выявить основные точки зрения по обсуждаемым вопросам.
     
  2. Выяснить, какие шаги можно предпринять к дальнейшему расширению и углублению дискуссии о спецификации BBCode, и имеет ли смысл это делать.

Участие в обсуждении может принять любой желающий, имеющий что сказать по теме. Посты, не относящиеся к теме, будут удаляться.
 
 

Последнее редактирование: 2008-04-18 12:17:59

Метки материала: BBCode, BB-code, BB-код, BB-коды, ББ-коды, HTML, разметка, tags, tag


68 комментариев

18.04.2008 12:48:10 #
Mozilla Firefox dima
Начну тему. Буду потихоньку постить сюда свои мысли о BBCode. По мере того как вспомнятся Well
 
Во первых. Назначение BBCode:
  1. Упрощение верстки:
    • Сокращенное написание тегов ([center], [color] и т.п.).
       
    • Комплексные теги (есть ли более понятное название?), такие как [quote] и [php], заменяющие целые нагромождения тегов HTML.
       
    • Удобная вставка смайликов.

  2. Автоматическая нормализация кода. Как ни верстай, вывод все равно будет валидным.
     
  3. Безопасность. Можно предоставить кому угодно без опасения о вредоносности кода.

Поправьте/исправьте, если что упустил.
18.04.2008 14:48:34 #
Opera Гость Sam
Ещё забыли: дополнительная прослойка между текстом и разметкой. Очень и очень помогает при изменении конечной разметки для пары тысяч статей.
 
Стандарт — да, нужен.
 
Я у себя (http://rmcreative.ru/) в данный момент использую несколько отличную от xBB разметку.
 
Тот же код намного удобней размечать одним тэгом, а не набором вроде [php]. У себя я реализовал это так:
[code=php], [code=css], [code=html]
18.04.2008 17:17:18 #
Mozilla Firefox dima
Ещё забыли: дополнительная прослойка между текстом и разметкой. Очень и очень помогает при изменении конечной разметки для пары тысяч статей.

Sam, мне кажется, что Вы затронули непростой вопрос:
 
Следует ли унифицировать BBCode только на уровне семантики, или также и на уровне производного HTML-кода? Если второе, то насколько жестко: теги, атрибуты, классы?
 
Мое имхо:
  1. На уровне семантики, унификация однозначно нужна. Например, все привыкли к тому, что тег [code] представляет собой блок кода, а не строку кода, как тег <code> в HTML. Лично мне это кажется неудобным, но вынужден придерживаться общепринятой трактовки.
     
  2. На уровне HTML, унификация лично мне кажется желательной (люблю порядок Well), но практически нереализуемой. А раз так, то имеет смысл извлечь из этого пользу. Поэтому соглашусь с вами:
     
    BBCode предоставляет удобную возможность изменять разметку HTML не изменяя авторских текстов.

P.S. xBB поддерживает синтаксис [code=php], [code=css], [code=html4] и т.п. Теги [php], [css], [html4] и т.п. являются сокращениями для первых конструкций.
18.04.2008 17:49:36 #
Mozilla Firefox dima
BBCode часто называют разновидностью HTML. Это неправильно.

Отличия BBCode от HTML

  1. В BBCode отсутствует вершина дерева тегов. Если все теги HTML обязаны быть вложены в <html>, то для BBCode это не так. Он может вообще не содержать тегов.
     
  2. Написание тегов BBCode и тегов HTML различно. В первом теги заключаются в квадратные скобки, во втором - в угловые. В первом широко используются конструкции вида [имя_тега=некоторое_значение]. В HTML такие конструкции являются ошибочными.
     
  3. Наборы тегов в BBCode и в HTML различны. В BBCode есть теги, которых нет в HTML и наоборот. Некоторые теги одинаково называются, но имеют различное семантическое значение, (тот же тег [code]).
     
  4. Мнемоники в BBCode и в HTML различны. Если в HTML все мнемоники имеют вид &чего-то; и обозначают некоторый символ, то в BBCode мнемоники могут иметь любое написание, и несут, как правило, семантический смысл (смайлики).
     
  5. Назначение у BBCode и HTML различно. HTML является разметкой для визуального представления документа. BBCode является разметкой для последующей конвертации в другой формат.

Все перечислил?
 
~updated~
 
Вспомнил еще два отличия:
  1. В HTML любая последовательность пробельных символов считается пробелом. А в BBCode все пробельные символы сохраняются. Два рядом стоящих пробела означают именно два пробела, а не один; перенос строки приводит к переносу строки.
     
  2. В BBCode есть такое понятие, как "автоматические ссылки". В HTML его нет.
18.04.2008 22:32:45 #
Opera Гость Sam
На уровне генерируемой разметки унифицировать, думаю, не стоит. А вот на уровне семантики — определённо стоит.
 
dima
HTML является разметкой для визуального представления документа.
Ну уж нет! HTML — семантика.
 
dima
А в BBCode все пробельные символы сохраняются.
У меня не сохраняются.
 
dima
В BBCode есть такое понятие, как "автоматические ссылки". В HTML его нет.
Это ещё откуда? Не имеет это отношения к BBCode.
19.04.2008 10:21:22 #
Mozilla Firefox dima
Sam
dima
HTML является разметкой для визуального представления документа.
Ну уж нет! HTML — семантика.

Неправильно я высказался. Имел в виду, что HTML предназначен для обработки агентами пользователей, которые его визуализируют. А BBCode вообще не доходит до клиента, конвертируется в HTML на сервере.
 
Sam
dima
А в BBCode все пробельные символы сохраняются.
У меня не сохраняются.

Думаю, что это отступление от общей практики. Думаю, что большинство пользователей BBCode привыкли именно к тому, что форматирование их текстов пробедьными символами сохраняется.
 
Sam
dima
В BBCode есть такое понятие, как "автоматические ссылки". В HTML его нет.
Это ещё откуда? Не имеет это отношения к BBCode.

Сами по себе автоматические ссылки не являются частью BBCode. Но во всех известных мне реализациях они поддерживаются. А для HTML я не видел ни одного браузера, который бы их поддерживал.
22.04.2008 15:54:18 #
Opera Гость Sam
dima
Думаю, что это отступление от общей практики.
Ну, не знаю, вставлять кучу nbsp по поводу и без — извращение.
 
dima
Но во всех известных мне реализациях они поддерживаются.
У меня не поддерживаются.
 
dima
я не видел ни одного браузера, который бы их поддерживал.
А они и не должны.
23.04.2008 21:18:12 #
Mozilla Firefox dima
Sam
Ну, не знаю, вставлять кучу nbsp по поводу и без — извращение.

Может быть и так. Но речь ведь идет об особенностях BBCode. О том, что ожидает пользователь от BBCode. Является такое поведение извращением или не является - уже другой вопрос.
 
Sam
У меня не поддерживаются.

Зато поддерживается в большинстве других реализаций. В том числе и во всех распространенных форумных движках, которые и задают де-факто стандарт BBCode. Давайте отличать общепринятое от частного.
 
Sam
dima
я не видел ни одного браузера, который бы их поддерживал.
А они и не должны.

Никто и не утверждал, что они должны. Более того, я совершенно согласен, что они не должны. Речь шла об отличиях BBCode от HTML. Одно из них следующее:
 
Большинство конвертеров BBCode преобразуют (хотя это поведение, как правило, можно отключить) адреса ресурсов в гипперссылки, тогда как ни один из "конвертеров" (т.е. агентов пользователей) HTML не станет этого делать без явного указания в HTML-коде.
27.04.2008 04:16:29 #
Mozilla Firefox dima

Особенности BBCode

  1. Теги в квадратных скобках.
     
  2. Расширяемый набор тегов. Существует "джентельменский набор" тегов, помимо которых может быть создано неограниченное множество других тегов.
     
  3. Сохранение форматирования пробельными символами. Хотя встречаются реализации, в которых это не так. (Например, реализация Sam-а)
     
  4. Смайлики. Хотя в некоторых реализациях их преобразование является опциональным.
     
  5. Расширяемый набор мнемоник (смайликов). Полностью аналогично тегам.
     
  6. Автоматические ссылки. Хотя в некоторых реализациях автоматическая обработка ссылок является опциональной.
     
  7. Отсутствие пользовательских ошибок. Это означает, что если тот или иной символ или синтаксическая конструкция не могут быть обработаны как правильная конструкция BBCode, то они будут выведены как есть. Считается, что если пользователь ввел что либо "не правильно", то он хотел ввести именно так, и нужно вывести текст именно так, как ввел пользователь. Никаких сообщений об ошибках не выводится, так как в BBCode никаких ошибок не существует.
     
    Например, если в тексте встретился символ "[", за которым не следует имени тега, то обработчик не должен воспринимать его как спецсимвол и должен просто вывести его без сообщения об ошибке.
     
    То же касается и правильно написанных тегов, там где они не должны обрабатываться. Например, внутри тега [code].
     
    Обработчик BBCode не должен пытаться быть умнее пользователя и должен преобразовать его текст только в той части, которая оговорена правилами. А все, что не оговорено правилами, должен выводить, как оно было введено.
29.04.2008 19:23:13 #
Opera Гость Sam
Смайлики к BBCode не имеют никакого отношения, также, как и автоссылки. В тех же форумных движках (если я правильно помню, то vBulletin) всё это реализовано отдельно.

Оставьте свой комментарий:

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2010, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.