Подключение модулей в XSL шаблонахКомментарии к статьеВерсия для печати  

Порядок подключения.

1. Подключение пространства имён.

Дополнительный элемент arp:module определён в пространстве имён Arp. Чтобы подключить это пространство имён нужно модифицировать заголовок того шаблона, в котором будет использоваться этот элемент.

Было

<xsl:stylesheet  version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

Требуется

<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:arp="http://www.arptek.ru/arp-ns"
	exclude-result-prefixes="arp" >

2. Порядок подключения и указания параметров.

Все модули системы Arp.Site делятся на два основных типа – те, которые требуют для своей работы указания конкретного элемента дерева, и все остальные.

Например, указание конкретного элемента требуется для модулей vote (для модуля голосования требуется указать конкретную ленту голосований), subtree (для модуля рисования поддерева требуется указать корневой элемент) и некоторых других.

Другие модули могут требовать указания нескольких элементов дерева или не требовать их вообще. Например, модуль xpath принимает список элементов и даже даёт возможность исключения из набора некоторых элементов, модуль UserAgent вообще не требует параметров.

Подключение модулей первого типа.

Пусть в старом варианте модуль subtree подключался следующим образом:

<!--?
	subtree 123456 2 rights
?-->

(Здесь 123456 – номер элемента дерева, 2 – глубина построения дерева, rights – флаг обязательной проверки прав доступа)

При помощи элемента arp:module модуль subtree можно подключить следующим образом:

<arp:module
	type=
	"subtree"select="//*[@cell='123456']"
	tail="2 rights"
	format="old"/>

Здесь type – название подключаемого модуля, select – путь (xpath) до выбираемого элемента, tail – дополнительные параметры, которые указывались после номера элемента в исходном формате, format – флаг, указывающий на необходимость генерации элемента в старом формате. Если флаг не указан (Или его значение не равно old), то можно указать дополнительный атрибут name, который впоследствии можно будет использовать для выбора нужного элемента XML.

Примеры.

Подключение при помощи комментария. Старый формат вывода.

<!--?
	subtree 123456 2 rights
?-->
<subtree
	cellid="123456"
	webobjectid="102435">
	...
</subtree>

Подключение при помощи элемента arp:module. Старый формат вывода.

<arp:module
	type=
	"subtree"select="//*[@cell='123456']"
	tail="2 rights"
	format="old"/>
<subtree
	cellid="123456"
	webobjectid="102435" >
	...
</subtree>

Подключение при помощи элемента arp:module. Новый формат вывода.

<arp:module
	type=
	"subtree"select="//*[@cell='123456']"
	tail="2 rights" />
<arp:module
	xmlns:arp="http://www.arptek.ru/arp-ns">
	<subtree
	cellid="123456"
	webobjectid="102435" >
		...
	</subtree>
</arp:module>

Подключение при помощи элемента arp:module. Новый формат вывода с указанием name.

<arp:module
	type=
	"subtree"select="//*[@cell='123456']"
	tail="2 rights"
	name="some_tree" />
<arp:module
	xmlns:arp="http://www.arptek.ru/arp-ns"
	name="some_tree">
	<subtree
		cellid="123456"
		webobjectid="102435">
		...
	</subtree>
</arp:module>

Подключение остальных модулей.

Подключение остальных модулей производится без указания атрибута select элемента arp:module. Все параметры, которые были указаны в старом варианте строки подключения после имени модуля, должны указываться в атрибуте tail.

Примеры

Подключение при помощи комментария. Старый формат вывода.

<!--?
	xtree +125067 -name infospace
?-->
<infospace>
	...
</subtree>

Подключение при помощи элемента arp:module. Старый формат вывода.

<arp:module
	type="xtree"
	parameters="+125067 -name infospace"
	format="old"/>
<infospace> 
	...
</subtree>

Подключение при помощи элемента arp:module. Новый формат вывода.

<arp:module
	type="xtree"
	parameters="+125067 -name infospace" />
<arp:module
	xmlns:arp="http://www.arptek.ru/arp-ns" >
	<infospace>
		...
	</infospace>
</arp:module>

Подключение при помощи элемента arp:module. Новый формат вывода с указанием name.

<arp:module
	type="xtree"
	parameters="+125067 -name infospace"
	name="some_tree"/>
<arp:module
	xmlns:arp="http://www.arptek.ru/arp-ns"
	name="some_tree">
	<infospace>
		...
	</infospace>
</arp:module>

Использование других форматов указания элемента дерева в атрибуте select.

Атрибутselect(select="//*[cell='123456']") содержит конструкцию, называемую XPath. С её помощью можно указать элемент дерева, не зная его номер или имея только относительный путь до элемента. Формат поиска элементов полностью соответствует стандарту XPath 1.0, а поддерживаемые свойства указаны ниже.

Элемент XPath

Описание

Примеры и синтаксис

Корневой элемент.

В качестве корневого элемента выступает корень информационного дерева (объект Infospace с id=1)

select="/"

select="/Infospace"

Текущий элемент

Текущем элементом дерева является текущий просматриваемый объект (а не тот объект, на уровне которого определён шаблон)

select="."

select="current()"

Имена элементов

В качестве имён элементов выступают названия классов (типов объектов) этих элементов.

Корень – Infospace

Группа сайтов – group

Сайт – site

Раздел – folder

Статья – article

Форум – board и т.д.

Статические атрибуты элементов

Статические атрибуты элементов связаны с содержанием соответствующих элементов дерева и связанных с ними материалов. Это:

cell, name, netname, object, order, state

@cell – идентификатор элемента дерева (Cell::id)

@name – название материала (WebObject::name)

@netname – сетевое имя элемента (Cell::path)

@object – идентификатор материала (WebObject::id)

@order – номер «порядка» элемента (Cell::order)

@state – текущий статус материала – editing, submitted, published, archived (WebObject::state)

Динамические атрибуты элементов

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

@current='true' – Если пользователь просматривает именно этот элемент

@active='true' – Если пользователь просматривает этот элемент или один из его дочерних элементов.

Некорректное или неумелое указание XPath для аттрибута select может заметно замедлить время обработки страницы. Сравните:

Ожидаемый результат

XPath

Время

Выбор папки с сетевым именем '123'

//site[@active='true']//folder[@netname='123']

3 сек

Выбор папки с сетевым именем '123', если известно, что она на втором уровне сайта.

//site[@active='true']/*/folder[@netname='123']

4 мс.

Старый способ подключения модулей

Данных, находящихся в дефолтном XML-документе страницы, иногда бывает недостаточно, чтобы правильно отобразить страницу. Поэтому в системе Arp.site предусмотрена возможность расширения базового XML-документа при помощи модулей.

Подключение модулей в шаблоне происходит так:

<xsl:stylesheet>
<!--?
module-name parameters
?-->
<xsl:template match="…">
</xsl:template>
</xsl:stylesheet>

  • module-name – название модуля,
  • parameters – параметры подключения модуля

Рассмотрим конкретный пример.

<!--?
user-info
?-->

После подключения модуля user-info в XML-коде появляется дополнительная информация в виде:

<user-info aka="arser" email="arser@abitu.ru" login="arser" name="Каленюк Алексей Викторович" />

И эту информацию можно использовать при прорисовке страницы. Модуль user-info выдает информацию о пользователе, который находится в данный момент на странице.

Последнее обновление материала:

Прокоментировать  [Кол-во комментариев: 0] Обсудить в форуме

Разделы сайта
Почтовый адрес:
141700, Московская область, г. Долгопрудный, Институтский переулок , дом 9, офис 207

Телефон/факс
+7 (495) 408 70 72

Электронная почта
Общие вопросы: info@arptek.ru
Вопросы сотрудничества: business@arptek.ru