printРазвитие системы

printЯзык разметки и CMS

Языки разметки
Информация, которая вводится пользователем в CMS или на форуме, кроме текстовой части, должна включать элементы форматирования (текст выделен жирным или мелким шрифтом), логическую структуру (текст является заголовком или элементом списка) и связи с другой информацией (фото или ссылка на другой сайт).
Единственным способом внедрения этой информации во вводимый текст является язык разметки — это набор символов или последовательностей, вставляемых в текст для передачи информации о его формате или строении. Язык разметки не определяет способ визуального отображения документа, что позволяет менять его отображение в зависимости от конкретного устройства вывода (монитор компьютера, мобильный телефон или принтер).
Несмотря на стремление разработчиков языков разметки упростить работу по добавлению разметки в текст, все языки требуют от пользователя запоминания необходимых синтаксических конструкций, ключевых слов и последовательностей (при создании сложных документов с цитатами, сносками, формулами, вставками кода, могут потребоваться десятки различных элементов языка разметки). Любые ошибки в использовании синтаксических конструкций или неправильная вложенность тегов могут привести некорректному форматированию текста, и такие ошибки в больших документах сложно найти и исправить.
Чтобы пользователю не приходилось запоминать все ключевые слова и конструкции, на многих сайтах используют специальный редактор, который позволяет выделить часть текста и указать нужный вид форматирования этой части текста с помощью панели инструментов – все необходимые элементы языка разметки будут добавлены в текст и обеспечена их правильная вложенность. Главным недостатком такого редактора является то, что пользователь может увидеть результат форматирования только по специальному запросу на предпросмотр или после сохранения изменений на сайте. Для пользователя предпочтительнее использование WYSIWYG-редакторов, которые позволяют изменять разметку, манипулируя визуальным отображением документа. Подобные редакторы существуют для HTML-разметки, но могут быть реализованы для других языков разметки.
Если в тексте присутствуют элементы, форматирование которых производится автоматически (например, листинги с нумерацией строк, подсветка синтаксиса в программе, математические формулы), то для изменения таких элементов в WYSIWYG-редакторе должны быть предусмотрены специализированные мини-редакторы, на лету изменяющие форматирование элемента в соответствии с введенной информацией. Аналогичные проблемы возникают при использовании виджетов JQuery, формируемым на основе стандартных HTML-элементов.
Редактор может быть использован для непосредственного ввода информации на сайте, но если информация загружается из внешних источников (базы данных или пакеты изменений), то при подготовке этой информации для загрузки снова возникает проблема её редактирования. При ориентировании только на WYSIWYG в каждое приложение, в котором будет готовиться информация, потребуется добавить инструменты для её редактирования и просмотра. Использование языков разметки минимизирует затраты на разработку приложений, но усложняет работу пользователям. Уровень знаний и квалификация пользователей должны быть тем выше, чем сложнее язык разметки и чем больше в нём правил и ограничений.
Обзор языков разметки
Можно выделить следующие основные разновидности языков разметки.
HTML (XML)
Наиболее часто используемый язык, так как является стандартным для web-документов. Существует множество программ для WYSIWYG редактирования. Текстовые редакторы и офисные приложения могут экспортировать документы в этот формат, хотя при этом часто получается излишне перегруженный тегами и атрибутами документ. Прямое редактирование осложняется как наличием многочисленных тегов (более 100), требующих при использовании определенного порядка и вложенности, так и большой чувствительностью результата отображения к ошибкам разметки, которые трудно обнаруживать. При использовании языка HTML для загрузки информации необходима проверка текста на корректность (ошибка может привести к искажению отображения не только этой информации, но и всей страницы) и безопасности (внедрение в текст JavaScript дает возможность получить доступ к привилегиям и данным других пользователей, в т.ч. администратора). Основой для HTML является язык XML, поэтому все рассмотренные проблемы относятся к XML и к другим основанным на XML языкам разметки (DocBook, TEI, MathML и т.п.).
Пример документа:
<h1>Anatidae</h1>
<p>The family <i>Anatidae</i> includes ducks, geese, and swans,
but <strong>not</strong> the closely-related screamers.</p>
BB-коды
BB-коды были придуманы с целью предоставить более простой, безопасный и ограниченный по сравнению с HTML способ форматирования сообщений. BB-коды были созданы на основе HTML-тегов путем замены <> на [], и имеют те же ограничения по по применению, что и соответствующие HTML-теги. Преобразование текста в HTML производится специальной программой, проверяющей корректность использования тегов. Неверные теги и теги, для которых не нашлось соответствия, не преобразуются, и это упрощает поиск ошибок. Меньшее количество тегов (обычно не более 10-20) снижает требования к знаниям пользователя, но сужает возможности по форматированию информации. Также среди тегов отсутствуют теги для выделения логической структуры текста (например, нет тегов для заголовков). Близость к HTML позволяет использовать WYSIWYG-редактор, который после редактирования преобразует HTML-текст в текст с использованием BB-кодов.
Чаще всего BB-коды используются на форумах, но зачастую каждый движок форума использует свой набор тегов. Более-менее стандартными тегами являются только 10 тегов.
Пример документа:
[center][size=5]Anatidae[/size][/center]
The family [i]Anatidae[/i] includes ducks, geese, and swans,
but [b]not[/b] the closely-related screamers.
HAML
Язык HAML в первую очередь используется как язык для описания шаблонов страниц, но может рассматриваться и как язык разметки полностью эквивалентный HTML/XML. Но наглядность структуры документа за счет обязательных отступов, отсутствие закрывающихся тегов значительно уменьшает вероятность ошибки по сравнению с HTML. Все теги HTML полностью доступны в HAML, но WYSYWYG-редакторов при этом не существует, поэтому работа с документами требует высокой квалификации пользователей.
Пример документа:
%h1 Anatidae
%p The family 
  %i Anatidae
  includes ducks, geese, and swans, but 
  %strong not
  the closely-related screamers.
TeX (LaTeX)
Языки TeX и LaTeX используются в основном для форматирования научных статей, включают в себя специальные средства для выделения структуры документов, математических тестов, создания оглавлений и индексов. Сложность языка и требования к квалификации пользователя выше, чем у языка HTML.
Аналогичный синтаксис имеет язык разметки Texinfo, используемый для генерации документов в проекте GNU (изменены названия тегов и вместо символа \ используется символ @).
На сайтах, посвященных обсуждении науки, часто имеется возможность вставлять формулы в формате TeX, а для форматирования остальной части текста используются BB-коды или Wiki-разметка.
Пример документа:
\section{Anatidae}
The family \empf{Anatidae} includes ducks, geese, and swans,
but \textbf{not} the closely-related screamers.
Wiki-разметка и др.
При разработке языков Wiki-разметки, Texile, MarkDown, reStructuredText их авторы ставили цель упростить форматирование текста, повысить наглядность, некоторым образом приблизить к WYSIWYG без применения графических редакторов.
Wiki-разметка, предложенная авторами MediaWiki и используемая, например, в Википедии, покрывает лишь небольшую часть необходимого форматирования текста, а для остальных элементов форматирования предлагается либо напрямую использовать теги HTML, либо вводятся HTML-подобные теги. Это можно рассматривать как неудачу в поставленной цели. Упущения в элементах форматирования породили большое количество несовместимых между собой вариантов языков Wiki-разметки, созданных для конкретных движков сайтов. В 2006-2008 годах была сделана попытка выработать стандарт для Wiki-разметки, который повысил наглядность языка разметки, но некоторые важные виды форматирования документов также были упущены. Кроме недостаточных возможностей, можно отметить необоснованные ограничения по использованию некоторых элементов форматирования внутри заголовков или ссылок и по строгой вложенности элементов, заимствованные из HTML.
Язык Textile имеет те же проблемы, что и Wiki-разметка, хотя для расширенного форматирования абзацев и заголовков можно не прибегать к HTML.
Наиболее близкий к результату отображения имеет документ с разметкой reStructuredText (язык MarkDown является его упрощенной версией), но это достигается за счет большей работы пользователя (особенно при создании таблиц). Возможности форматирования немногим больше, чем в Wiki-разметке, в которой этот недостаток компенсируется использованием HTML.
Пример документа:
= Anatidae =

The family ''Anatidae'' includes ducks, geese, and swans,
but '''not''' the closely-related screamers.
loading