Что такое XML Sapiens

Что такое XML Sapiens


1995 году компания Vignette представила на рынке первую коммерческую систему класса CMS (систем управления контентом). С тех пор число коммерческих CMS неустанно растет и ныне сам термин CMS прижился на рынке и, как правило, не требует расшифровки. За последние годы было утверждено множество отрытых стандартов, позволяющих структурировать информацию на сайтах, отделить ее от дизайна, но, по-прежнему, большинство CMS не следует им. Так уже много лет существует стандарт XSLT, позволяющий формирование документов из разделенных источников: XML-файла со структурированным содержанием документа и XSL-шаблона с описанием того, как документ будет представлен на сайте. Причем само формирование документа, может происходить на стороне клиента. Достаточно передать браузеру XML-структуру данных, содержащую ссылку на XSL-шаблон и браузер сам «нарисует» страницу в том виде, как это предполагалось дизайнерами. Содержание каждой страницы сайта различается, однако форма подачи этого содержания, обычно, ограниченна небольшим числом шаблонов. Таким образом, XSLT позволяет нам одиножды написанный шаблон представления данных на сайте использовать многократно. Казалось бы, вот она идеальная технология для CMS. Однако повсеместное применение данной технологии сдерживает ряд факторов. Из них психологическая инерция – не главенствующий фактор. Описание функциональности сайта с помощью XSLT – весьма трудоемкая задача. Кроме того, XSL-шаблон слишком зависим от XML-документа с данными, что ограничивает гибкость решений на основе данной технологии. .
Таким образом, XSLT представляет собой концептуально безупречное, но на практике трудоемкое решение. Данное обстоятельство побуждает разработчиков искать новые решения, включающие преимущества утвержденных открытых стандартов и, в то же время, относительно удобные в использовании. Одно из таких решений – декларативный язык XML Sapiens (www.xmlsapiens.org).

Как устроен XML Sapiens


Так же как и XSLT, с каждым документом сайта должен быть связан определенный шаблон. Шаблон может содержать любой код представления (например, HTML) и инструкции XML Sapiens. В шаблон могут быть, включены несколько файлов. Для этого используется инструкция sapi:include, близкая к аналогу в открытом стандарте xInclude.

<sapi:include href=»адрес_файла_шаблона» parse=»template» />

Прочие инструкции XML Sapiens позволяют доставить в документ содержание и функциональные блоки.

Цель этого решения разделить описание структур содержания и функциональности. Это позволяет единожды создать некоторый набор каркасов структур содержания и функциональности и в дальнейшем использовать его как конструктор при построении сайта.

XML Sapiens и данные


XML Sapiens включает такое понятие как состояние интерфейса. Это позволяет определить для одной и той же страницы сайта различные наборы данных в зависимости от внешних или заданных условий. Допустим, если пользователь авторизован на сайте, страница может содержать одни поля содержания, если не авторизован другие. Состояния набора полей содержания страницы определяется в отдельном XML-документе. Для того чтобы применить набор достаточно выполнить включение набора для указанного состояния:

<sapi:include href=»адрес_файла_набора_полей» parse=»fieldset» state=»a2″ />

Набор полей содержит инструкции доставки данных. Эти инструкции связывают указанный идентификатор данных с типом поля, описанным во внешнем XML-документе.

<sapi:apply name=»qc.идентификатор.value» type=»тип» href=»адрес_описания_типа» />

XML документ типа поля, как и в случае набора полей, может содержать описания типа для различных состояний интерфейса. Если в системе определены состояния «администрирование» и «доставка содержания», то в первом случае данные могут быть представлены в форме запроса содержания, во втором «как есть».

Рис. 1

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=»http://www.internet-technologies.ru/?url=http%3A%2F%2Fsite.com%2Fddc%2Fmenu.xml»>
<sapi:param name=»param1″>value1</sapi:param>
<sapi:param name=»param2″>value2</sapi:param>
</sapi:apply>

Рис. 2

Как видите, XML Sapiens позволяет подготовить набор описаний структур данных, типов полей содержания и функциональность и в дальнейшем использовать при конструировании сайта. Возможность многократного использования этих составных элементов снижает время разработки веб-проектов, позволяет избежать системного программирования. Причем, XML Sapiens универсален. Он может применяться в CMS, написанной на любом программном языке.

Язык существует более года, а недавно была опубликована вторая версия языка. Это внушает надежду на то, что язык будет и далее развиваться и использоваться. На сегодня на базе этого языка функционируют всего несколько CMS. Однако если это число увеличится, обмен функциональными решениями между разработчиками, использующими различные CMS может стать обычным делом.

Ссылки по теме:
Русскоязычный вариант спецификации XML Sapiens 2.0: http://xmlsapiens.org/spec/ru_sapi20.pdf
Пресс-релиз о новый версии языка: http://sitesapiens.ru/news/4256/

Информация об авторе
Дмитрий Шейко
Ведущий программист Red Graphic Systems (www.redgraphic.ru)

Занят разработкой программного обеспечения с 1987 года. Начиная с 1998 года опубликовал более 50 технических статей в специализированных изданиях. С 2001 года разрабатывает архитектурные решения и инструментальные средства для управления содержанием (Content Management, CMF, ECM).

Поделиться в соц. сетях

mailru Что такое XML Sapiens
facebook Что такое XML Sapiens
odnoklassniki Что такое XML Sapiens
livejournal Что такое XML Sapiens
googlebuzz Что такое XML Sapiens

Также рекомендуем:

  1. Кнопка «+1» от Google доступна для сторонних сайтов Google сообщил о доступности размещения специальной социальной кнопки «+1» для сторонних сайтов. Как известно, кнопка «+1» является ответом Google нашумевшей кнопке «Like», которая хорошо знакома всем пользователям социальной сети Facebook.. Напомним, что Google запустила кнопку «+1» в марте этого года, как способ пользовательской оценки поиска. Кнопка позволяет авторизованным пользователям Google отмечать любимые сайты и дает [...]...
  2. Персонализированный поиск от Twitter В официальном блоге Twitter появилась сообщение об очередных нововведениях в поиске, направленных на повышение релевантности и более качественную персонализацию поиска.. Представители Twitter говорят о том, поиск не только стал более релевантным и персонализированным. Кроме этого, в нем появились фото и видео, связанные с запросом, – теперь они выводятся прямо на странице с результатами поиска. С [...]...
  3. Доступна первая бета-версия браузера Opera 11 Вчера для персональных компьютеров стала доступна бета-версия браузера Opera 11.. Основное отличие Opera 11 от предшествующих версий — появление принципиально новой системы вкладок с функцией группировки. Ранее вкладки с открытыми веб-страницами были расположены друг за другом, а теперь пользователям предоставлена возможность группировать вкладки по веб-сайтам или темам. Возможность группировки появляется, если мышью разместить одну вкладку [...]...
  4. Социальный поиск Google становится глобальным В последнее время в компании Google четко прослеживается тенденция к глобализации собственных поисковых сервисов.. Еще совсем недавно по всему миру был запущен новый поисковый алгоритм Panda, а уже сейчас появилось официальное сообщение о массовом внедрении социального поиска (Social search). Отныне на всех локальных версиях поиска Google в поисковую выдачу будут включаться социальные результаты – записи [...]...
  5. Opera 11: финальная версия Только что стало известно, что финальная версия браузера для персональных компьютеров Opera 11 стала доступна.. Разработчики реализовали усовершенствованную систему вкладок, дающую возможность группировки. В предыдущих релизах расположение вкладок с открытыми web-страницами было последовательным, а итоговая версия браузера позволяет объединять вкладки по темам или сайтам. Легким движением мыши помещаете одну вкладку поверх той, с которой хотите [...]...
  6. У кнопки «Like» появился конкурент от Google 30 марта этого года компания Google представила новую кнопку «+1». Эта кнопка позволяет пользователям рекомендовать друг другу интересные страницы в интернете. О запуске новой кнопки сообщается сообщается в официальном блоге Google.. На сегодняшний день кнопка «+1» доступна в тестовом режиме рядом со ссылками в результатах англоязычного поиска на google.com. Для того чтобы воспользоваться нововведением пользователь [...]...
  7. PHP 6 на подходе Вы уже, наверное, в курсе, что группа разработчиков ядра PHP 6 встречалась в ноябре 2005 года в Париже. Это была захватывающая встреча, на которой разработчики обсудили развитие PHP со своей точки зрения. Прежде чем я начну свой рассказ о принятых решениях, вынужден предупредить – все что здесь перечислено, это не «100% решенные вопросы» и в [...]...
  8. Пример создания многоязыкового приложения (XML) Введение Вопрос разработки многоязычного web – приложения (сайта) или приложения с поддержкой интерфейса пользователя на разных языках, поднимается довольно часто. Если еще пару лет назад данная задача была не так актуальна, то сейчас подобная функциональность де – факто стала одним из требований заказчика при создании web – ориентированного приложения.. Формулировка задачи Целью данной работы является [...]...
  9. АJAX. Не повторяйте ошибок AJAX (Asynchronous JavaScripting and XML) стремительно притягивает интерес веб-разработчиков к использованию определенного инструментария – конкретного набора технологий, с помощью которого (по мнению большинства) закладывается новый этап развития веб-приложений. Этот набор включает в себя (X)HTML, CSS, DOM, JavaScript, XML, XSLT, XMLHttpRequest и как альтернативу к XML/XSLT возможно использовать JSON и JSON-RPC.. AJAX устраняет необходимость перезагрузки веб-страницы [...]...
  10. Создание сайтов с возможностью печати PDF на примере PDF::AP Хотелось бы рассмотреть преимущества формата PDF (Portable Document Format), разработанного компанией Sun Microsystems, а также где и почему стоит использовать формат PDF при создании сайтов.Пожалуй, вам несколько раз встречалась необходимость печати документов прямо из Интернета. Это могут быть счета, квитанции, данные для печати на шаблоне.Возможно, вам также приходилось встречаться с особенностями печати подобных документов, оформленных [...]...
  11. Яндекс изменит технологию поисковой выдачи (SERP) Крупнейший российский поисковик «Яндекс», заявил о скорой смене базовой технологии, применяемой в поисковой выдаче (SERP). Сообщение об этом было опубликовано в официальном блоге заместителя руководителя департамента по разработке компании «Яндекс» – Анатолия Орлова.. С самого начала своего существования «Яндекс» использовал для своей поисковой выдачи специальный perl-скрипт. Не стоит отрицать очевидных достоинств данной технологии, но стоит [...]...
  12. Работа с шаблонами. Разработка собственных и использование существующих решений. В этом выпуске мы поговорим о такой вещи как темплейты (templates) – что это такое, зачем это нужно и почему почти все это используют. Но сначала, как обычно, немного новостей.. Новости А новости таковы, что версия PHP 4.1.0, о создании которой я говорил в предыдущем выпуске вышла! Правда пока что она доступна лишь в виде [...]...
  13. GlassBox Описание Недавно обнаружили весьма интересную javascript библиотеку Glassbox.С ее помощью можно создавать прозрачные рамки, цветные полупрозрачные слои и различные визуальные эффекты, такие как плавное появление и исчезновение слоев.. Эта библиотека весьма компактна и включает в себя библиотеки Prototype и Script.aculo.us. К основным плюсам библиотеки можно отнести: * Легкость использования; * Кроссбраузерность (Работает в IE6+ , [...]...
  14. 12 советов по написанию эффективных объявлений для Google AdWords В этой статье я расскажу о своих главных 12 советах, которыми я пользуюсь для создания эффективного объявления Google AdWords. Я тестировал Google PPC-систему, пока не достиг наилучших результатов. Эти советы помогут вам создать объявление с высоким CTR при наименьших затратах. 1. Выбирайте правильную аудиторию. Для получения правильного таргетинга, выберите язык и страны, на которые вы [...]...
  15. Уязвимость в капче Made-Cat Откроем страницу регистрации в каталоге. Просмотрим ее код и обнаружим что-то вроде:. img src=»http://made-cat.com/md/image.php?ct=11010121101102110100211010021100102 Это значит, что код на картинке 56442. 11010121101102110100211010021100102 Удалин двойки первые две единицы, и 2 единицы после каждой двойки. Получим: 0101 0110 0100 0100 0010Это если перевести из двоичной системы в десятичную получим 0101 = 0* 2^3 + 1 * 2^2 [...]...

Комментарии запрещены.