В 1995 году компания
Компания: (фр.compagnie — 1) общество, группа; 2) фирма, рота, экипаж корабля, театральная труппа) Vignette представила на рынке первую коммерческую систему класса CMS (систем управления контентом). С тех пор число коммерческих CMS неустанно растет и ныне сам термин CMS прижился на рынке и, как правило, не требует расшифровки. За последние годы было утверждено множество отрытых стандартов, позволяющих структурировать информацию на сайтах, отделить ее от дизайна, но, по-прежнему, большинство
Большинство — большая часть чего-либо. Под большинством в редких случаях имеют ввиду абсолютное большинство, то есть более половины какой-либо группы. Обычно большинство означает количественное преимущество одной части над другой. К примеру, треть и четверть. CMS не следует им.
Так уже много лет существует стандарт XSLT, позволяющий формирование документов из разделенных источников: XML-файла со структурированным содержанием документа и XSL-шаблона с описанием того, как документ будет представлен на сайте. Причем само формирование документа, может происходить на стороне клиента. Достаточно передать браузеру XML-структуру данных, содержащую ссылку на XSL-шаблон и браузер сам "нарисует" страницу в том виде, как это предполагалось дизайнерами. Содержание каждой страницы сайта различается, однако форма подачи этого содержания, обычно, ограниченна небольшим числом шаблонов. Таким образом, XSLT позволяет нам одиножды написанный шаблон представления данных на сайте использовать многократно. Казалось бы, вот она идеальная технология
Технология (от греч. — искусство, мастерство, умение; др.-греч. — мысль, причина; методика, способ производства)— комплекс организационных мер, операций и приемов, направленных на изготовление, обслуживание, ремонт и/или эксплуатацию изделия с номинальным качеством и оптимальными затратами, и обусловленных текущим уровнем развития науки, техники и общества в целом. для CMS. Однако повсеместное применение данной технологии сдерживает ряд факторов. Из них психологическая инерция
Инерция (от лат.inertia— бездеятельность, косность)— свойство тел сохранять покой или равномерное прямолинейное движение, если внешние воздействия на него отсутствуют или взаимно скомпенсированы. - не главенствующий фактор. Описание функциональности сайта с помощью XSLT - весьма трудоемкая задача. Кроме того, XSL-шаблон слишком зависим от XML-документа с данными, что ограничивает гибкость решений на основе данной технологии.
Таким образом, XSLT представляет собой концептуально безупречное, но на практике трудоемкое решение. Данное обстоятельство побуждает разработчиков искать новые решения, включающие преимущества утвержденных открытых стандартов и, в то же время, относительно удобные в использовании. Одно из таких решений - декларативный язык XML Sapiens.
Как устроен XML Sapiens
Так же как и XSLT, с каждым документом сайта должен быть связан определенный шаблон.
Шаблон
Шаблон в технике— пластина (лекало, трафарет ит.п.) с вырезами, по контуру которых изготовляются чертежи или изделия либо инструмент для измерения размеров. может содержать любой код представления (например, HTML) и инструкции XML Sapiens. В шаблон могут быть, включены несколько файлов. Для этого используется инструкция sapi:include, близкая к аналогу в открытом стандарте xInclude.
<sapi:include href=#>
Прочие инструкции XML Sapiens позволяют доставить в документ содержание и функциональные блоки.
Цель этого решения разделить описание структур содержания и функциональности. Это позволяет единожды создать некоторый набор каркасов структур содержания и функциональности и в дальнейшем использовать его как конструктор при построении сайта.
См. рис.1
XML Sapiens и данные
XML Sapiens включает такое понятие как состояние
Состояние — абстрактный термин, обозначающий множество стабильных значений переменных параметров объекта. интерфейса. Это позволяет определить для одной и той же страницы сайта различные наборы данных в зависимости от внешних или заданных условий. Допустим, если пользователь авторизован на сайте, страница может содержать одни поля содержания, если не авторизован другие. Состояния
Психическое состояние— один из возможных режимов жизнедеятельности человека, на физиологическом уровне отличающийся определёнными энергетическими характеристиками, а на психологическом уровне— системой психологических фильтров, обеспечивающих специфическое восприятие окружающего мира.
Наряду с психическими процессами и свойствами личности состояния являются основными классами психических явлений, которые изучает наука психология. Психические состояния влияют на протекание психических процессов, а, повторяясь часто, приобретя устойчивость, могут включиться в структуру личности в качестве её специфического свойства. Так как в каждом психическом состоянии присутствуют психологические, физиологические и поведенческие компоненты, то в описаниях природы состояний можно встретить понятия разных наук (общей психологии, физиологии, медицины, психологии труда ит.д.), что создаёт дополнительные трудности для исследователей, занимающихся данной проблемой. В настоящее время не существует какой-либо единой точки зрения на проблему состояний, так как состояния личности можно рассматривать в двух аспектах. Они являются одновременно и срезами динамики личности, и интегральными реакциями личности, обусловленными её отношениями, поведенческими потребностями, целями активности и адаптивности в окружающей среде и ситуации. набора полей содержания страницы определяется в отдельном XML-документе. Для того чтобы применить набор достаточно выполнить включение набора для указанного состояния:
<sapi:include href=#>
Набор полей содержит инструкции доставки данных. Эти инструкции связывают указанный идентификатор данных с типом поля, описанным во внешнем XML-документе.
<sapi:apply name="qc.идентификатор.value" type="тип" href=#>
XML документ типа поля, как и в случае набора полей, может содержать описания типа для различных состояний интерфейса. Если в системе определены состояния "администрирование" и "доставка содержания", то в первом случае данные могут быть представлены в форме запроса содержания, во втором "как есть".
XML Sapiens и функциональность
В шаблоне страницы также могут содержаться инструкции запроса сценария функциональности. Алгоритм этого сценария описан в заданном XML-файле.
<sapi:apply name="ddc.menu.value" href=#>
Документ описания функционального алгоритма (DDC) содержит инструкции анализа условий, аналогично XSLT. Синтаксис DDC также позволяет ссылаться на приложения CMS, которые, согласно переданным параметрам, возвращают потоки данных для дальнейшего анализа условий.
<sapi version="2.0" xmlns:sapi="http://www.xmlsapiens.org/spec/sapi.dtd">
<sapi:ddc name="sample">
<sapi:choose>
<sapi:when exp="eq(this_record_id.value,0)">
<sapi:for-each select="cms_application()" name="enum">
<sapi:params>
<sapi:param name="param1">value1</sapi:param>
<sapi:param name="param2">value2</sapi:param>
</sapi:params>
<sapi:ifempty>Records not found</sapi:ifempty>
<sapi:fallback>CMS-application error</sapi:fallback>
<sapi:choose>
<sapi:when exp="gt(this.this.переменная_из_потока_данных.value,0)">
<sapi:code>
Sample code, &this.this.переменная_из_потока_данных.value;
</sapi:code>
</sapi:when>
</sapi:choose>
<sapi:when>
</sapi:choose>
</sapi:ddc>
</sapi>
При запросе функционального сценария допускается указание параметров запроса, позволяет многократное использование функциональных сценариев.
<sapi:apply name="ddc.menu.value" href=#>
Как видите, XML Sapiens позволяет подготовить набор описаний структур данных, типов полей содержания и функциональность и в дальнейшем использовать при конструировании сайта. Возможность многократного использования этих составных элементов снижает время разработки веб-проектов, позволяет избежать системного программирования. Причем, XML Sapiens универсален. Он может применяться в CMS, написанной на любом программном языке.
Язык существует более года, а недавно была опубликована вторая версия языка. Это внушает надежду на то, что язык будет и далее развиваться и использоваться. На сегодня на базе этого языка функционируют всего несколько CMS. Однако если это число увеличится, обмен функциональными решениями между разработчиками, использующими различные CMS может стать обычным делом.
См. Рис.2
Информация об авторе
Дмитрий Шейко, ведущий программист Red Graphic Systems
Занят разработкой программного обеспечения с 1987 года. Начиная с 1998 года опубликовал более 50 технических статей в специализированных изданиях. С 2001 года разрабатывает архитектурные решения и инструментальные средства для управления содержанием (Content Management, CMF, ECM).