Skip to content
B-Vladi edited this page Jun 12, 2012 · 18 revisions

###Tags summary

Name Description Empty
comment Комментарий. нет
echo Выводит текстовые данные в результат рендеринга. да
root Корневой элемент в XML-файлах. нет
context Устанавливает контекст для дочерних элементов. нет
data Сохраняет данные в глобальный объект _data. нет
if Выполняет содержимое, если выражение test возвращает true. нет
unless Выполняет содержимое, если выражение test возвращает false. нет
else Если результатом выражения предка является истина (для unless) или ложь (для if), следующие за этим тегом узлы будут выполнены. да
each Перебирает ключи массива или собственные свойства переданного объекта. нет
template Создает inline-шаблон. нет
include Вызывает шаблон. да




###Tags details ###<tsn:comment /> Комментарий. Содержимое тега будет удалено из результирующего кода шаблона.

Атрибуты: нет.




###<tsn:echo /> Выводит текстовые данные в результат рендеринга.

Атрибуты:

Name Default value Type value Required Description
data this JavaScript выражение нет Выражение, результат которого будет вставлен на место тега.
format text text: значение выражения в атрибуте data будет преобразовано в строку.
json: значение выражения в атрибуте data будет преобразовано в строку функцией JSON.stringify.
нет Формат данных.
escape js: подготавливает данные, предназначенные для вставки в JavaScript-строку.
html: заменяет символы &<>" на HTML-сущности.
htmlDec: заменяет символы &<>" на десятиричные HTML-коды.
htmlHex: заменяет символы &<>" на шестнадцатеричные HTML-коды.
url: кодирует URL-строку функцией encodeURI.
нет Метод экранирования, которое будет применено к результату выражения text после преобразования type, если последнее было указано.

Так же для вывода данных (включая атрибуты) можно использовать TSN-сущность:

&namespace.property;

Здесь:

namespase: текущий префикс пространства имен тегов TSN

property: JavaScript-выражение, представляющее собой доступ к значению свойства объекта с использованием точечной нотации. Допускаются символы A-Za-z0-9._-.

TSN-сущности не могут использоваться в значениях атрибутов тегов TSN.

Пример:

Код шаблона:

<?xml version="1.0" encoding="UTF-8"?>
<tsn:root xmlns:tsn="TSN">
	<div>
		&TSN.this.string;
	</div>
	<div>
		<tsn:echo data="this.string" escape="htmlDec" />
	</div>
	<div>
		<tsn:echo format="json" />
	</div>
	<script>
		var data = "<tsn:echo data="this.string" escape="js"/>";
	</script>
</tsn:root>

Вызов:

template.call({
	string: '"Stiff Opposition Expected to \nCasketless Funeral Plan"',
	array: [1, 2, 3]
});

Результат:

<div>"Stiff Opposition Expected to
Casketless Funeral Plan"
</div>
<div>&#34;Stiff Opposition Expected to
Casketless Funeral Plan&#34;
</div>
<div>{"string":"\\"Stiff Opposition Expected to \nCasketless Funeral Plan\\"","array":[1,2,3]}
</div>
<script>
	var data = "\\"Stiff Opposition Expected to \
Casketless Funeral Plan\\"";
</script>




###<tsn:root /> Корневой элемент в XML-файлах.

Атрибуты:

Name Default value Type value Required Description
xmlns:tsn TSN нет Объявляет пространство имен TSN для поддержки автодополнения в IDE.
context this JavaScript выражение. нет Устанавливает контекст для дочерних элементов.

Пример:

Код шаблона:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tsn:root PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<tsn:root xmlns:tsn="TSN" context="this.contextRoot">
	<div>
		<span><tsn:echo data="this.first" /></span>
	</div>
	<div>
		<span><tsn:echo data="this.second" /></span>
	</div>
</tsn:root>

Вызов:

template.call({
	contextRoot: {
		first: 'First data',
		second: 'Second data'
	}
});

Результат:

<div>
	<span>First data</span>
</div>
<div>
	<span>Second data</span>
</div>




###<tsn:context /> Устанавливает контекст для дочерних элементов.

Атрибуты:

Name Default value Type value Required Description
object this JavaScript выражение. нет Результат выражения будет контекстом для дочерних элементов.

Пример:

Код шаблона:

<?xml version="1.0" encoding="UTF-8"?>
<tsn:context object="this.context">
	<div><tsn:echo data="this" /></div>
</tsn:context>

Вызов:

template.call({
	 context: 'Context data'
});

Результат:

<div>Context data</div>




###<tsn:data /> Сохраняет данные в глобальный объект _data.

Атрибуты:

Name Default value Type value Required Description
name да Имя данных.
value JavaScript выражение. нет Данные. Если атрибут не указан, будет сохранено вычисленное содержимое тега.
context true JavaScript выражение. нет Устанавливает контекст для дочерних элементов, если не был указан атрибут value.

Пример:

Код шаблона:

<?xml version="1.0" encoding="UTF-8"?>
<tsn:root>
	<tsn:data name="firstData" value="this.firstData" />
	<tsn:data name="secondData">
		<div>
			<tsn:echo data="this.secondData" />
		</div>
	</tsn:data>

	<div>
		<tsn:echo data="_data.firstData" />
	</div>
	&TSN._data.secondData;
</tsn:root>

Вызов:

template.call({
	firstData: 'First data',
	secondData: 'Second data'
});

Результат:

<div>First data
</div>
<div>Second data
</div>




###<tsn:if /> Выполняет содержимое, если выражение test возвращает true.

Атрибуты:

Name Default value Type value Required Description
test this JavaScript выражение. нет Выражение, результат которого влияет на обработку содержимого тега.

Пример:

Код шаблона:

<?xml version="1.0" encoding="UTF-8"?>
<tsn:if>
	Context is defined.
</tsn:if>

Вызов:

template.call(1);

Результат:

Context is defined.




###<tsn:unless /> Выполняет содержимое, если выражение test возвращает false.

Атрибуты:

Name Default value Type value Required Description
test this JavaScript выражение. нет Выражение, результат которого влияет на обработку содержимого тега.

Пример:

Код шаблона:

<?xml version="1.0" encoding="UTF-8"?>
<tsn:unless>
	Context is not defined.
</tsn:unless>

Вызов:

template.call();

Результат:

Context is not defined.




###<tsn:else /> Если результатом выражения предка является истина (для unless) или ложь (для if), следующие за этим тегом узлы будут выполнены.
Предком тега else должен быть тег if или unless. На одном уровне вложенности могут находиться несколько тегов else, если у них есть атрибут if или unless. Тег else без атрибутов должен быть всегда последним в списке детей if или unless. Атрибуты if и unless не должны вместе присутствовать в атрибуте.

Атрибуты:

Name Default value Type value Required Description
if JavaScript выражение. нет Следующие соседние узлы выполнятся, если результат этого выражения вернёт true.
unless JavaScript выражение. нет Логика, противоположная атрибуту if.

Пример:

Код шаблона:

<?xml version="1.0" encoding="UTF-8"?>
<tsn:if>
	Context is defined.
	<tsn:else if="typeof this === 'string'" />
	Data is string.
	<tsn:else />
	Context is not defined.
</tsn:if>

Вызов:

template.call('');

Результат:

Data is string.




###<tsn:each /> Перебирает вычисленный объект. Обязательно должен присутствовать один из атрибутов array или object.
В теле тега и его потомков доступны некоторые дополнительные JavaScript-переменные, в зависимости от типа перебираемого объекта:

При переборе массива:

  • _array: результат выражения атрибута array.
  • _length: длина массива.
  • _index: индекс текущего элемента массива.

При переборе объекта: * `_object`: результат выражения атрибута `object`. * `_property`: имя текущего свойства.

Атрибуты:

Name Default value Type value Required Description
array JavaScript выражение. нет Итерация будет осуществляться по ключам вычисленного массива.
object JavaScript выражение. нет Итерация будет осуществляться по свойствам вычисленного объекта.
item Корректное имя переменной JavaScript. нет Если этот атрибут присутствует, в теле тега и его потомков будет доступна переменная с именем, указанным в значении атрибута и значением, соответствующим значению текущего свойства.
context this JavaScript выражение. нет Устанавливает контекст для дочерних элементов.

Пример:

Код шаблона:

<?xml version="1.0" encoding="UTF-8"?>
<tsn:each object="this" item="name">
	<tsn:echo data="name" />
</tsn:each>

Вызов:

template.call({
	a: '1',
	b: '2',
	c: '3'
});

Результат:

123




###<tsn:template /> Создает inline-шаблон.

Атрибуты:

Name Default value Type value Required Description
name да Имя шаблона.

Пример: в описании тега <tsn:include />.




###<tsn:include /> Вызывает шаблон.

Атрибуты:

Name Default value Type value Required Description
name нет Имя inline-шаблона, который должен быть объявлен ранее. В этом случае происходит вызов шаблона из того места, где он был определён.
src Путь. нет Путь к файлу шаблона. Абсолютный путь начинается с TSN.config.templateRoot. Относительный путь начинается с папки текущего шаблона или от TSN.config.templateRoot, если текущий шаблон компилируется методом TSN.compile. Подключаемый шаблон наследует inline-шаблоны из текущего шаблона.
context this JavaScript выражение. нет Устанавливает контекст для шаблона.

Обязательно должен присутствовать тег name или src.

Пример:

Код шаблона:

<?xml version="1.0" encoding="UTF-8"?>
<tsn:root xmlns:tsn="TSN">
	<tsn:template name="tmpl">
		<tsn:echo />
	</tsn:template>
	<div>
		<tsn:include src="template.xml" />
	</div>
	<div>
		<tsn:include name="tmpl" />
	</div>
</tsn:root>

Код файла template.xml:

<?xml version="1.0" encoding="UTF-8"?>
<tsn:root xmlns:tsn="TSN">
	<tsn:include name="tmpl" />
	<tsn:template name="tmpl">
		Included data.
	</tsn:template>
	<tsn:include name="tmpl" />
</tsn:root>

Вызов:

template.call('Parent data.');

Результат:

<div>Parent data.
Included data.
</div>
<div>Parent data.
</div>
Clone this wiki locally