Я понимаю, что всем похуй, но всё же...
Вышла новая версия - 2.1.0
Что изменилось:
1. Выпилил тег set за ненадобностью
2. Теперь переменные из внешнего шаблона не доступны в подключаемых, дабы не прострелить себе ногу.
3. Добавлен метод
extend, для расширения набора тегов из кода.
4. Пойманы и наказаны несколько багов.
5. Расширилось API тегов.
Приведу пример шаблона:
page.xml:
<tsn:root xmlns:tsn="TSN">
<!-- Создаем скрипт для хедера -->
<!-- Сначала сгенерируем конечный результат и сохраним в переменную -->
<tsn:var name="header">
<script type="text/javascript">
//<![CDATA[
console.log();
//
]]>
</script>
</tsn:var>
<!-- А при вызове шаблона просто будем возвращать результат -->
<tsn:template name="header">
<tsn:echo text="_var.header" />
</tsn:template>
<!-- Контент страницы -->
<tsn:template name="body">
<div>Body</div>
</tsn:template>
<!-- Подключаем базовый шаблон -->
<tsn:include src="base.xml" context="this.globalData" />
</tsn:root>
Файл с базовой разметкой base.xml:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="base.css" type="text/css" rel="stylesheet"/>
<!-- Здесь будет выводиться стили для конкретной страницы -->
<tsn:include name="header" />
</head>
<body>
<!-- Вставляем навигацию с передачей необходимых данных -->
<tsn:include src="common/navigation.xml" context="this.navigation" />
<!-- Вставляем контент, который был определён ранее и унаследован здесь -->
<tsn:include name="body" />
<!-- Вставляем футер с передачей необходимых данных -->
<tsn:include src="footer.xml" context="this.footer" />
</body>
</html>
Вроде всё логично и понятно, как думаете?