<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:msxsl='urn:schemas-microsoft-com:xslt'
xmlns:ext='urn:extension-functions'
exclude-result-prefixes='msxsl ext'>
<xsl:output encoding='windows-1251'/>
<msxsl:script
language='JavaScript'
implements-prefix='ext'>
function date() {
now = new Date;
return now.getDate() + '.' +
(now.getMonth() + 1) + '.' +
now.getYear();
}
</msxsl:script>
<xsl:template match='/'>
<html>
<head>
<title>Today is page</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match='date'>
<xsl:value-of select='ext:date()'/>
</xsl:template>
</xsl:stylesheet>
<html>
<head>
<META
http-equiv='Content-Type'
content='text/html;
charset=windows-1251'>
<title>Today is page</title>
</head>
<body>Сегодня 18.10.2001.</body>
</html>
Как и во многих других процессорах, в MSXML предусмотрена функция расширения node- set
, которая преобразует результирующий фрагмент дерева во множество узлов. Функция node-set
принадлежит пространству имен с URI 'urn:schemas-microsoft- com:xslt
', и стандартным сценарием ее использования будет примерно следующий:
<xsl:stylesheet
version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:msxsl='urn:schemas-microsoft-com:xslt'
exclude-result-prefixes='msxsl '>
<!-- ... -->
<xsl:variable name='tree'>
<!-- Переменная, содержащая результирующий фрагмент дерева -->
<item>A</item>
<item>B</item>
</xsl:variable>
<!-- ... -->
<xsl:template ... >
<!-- Обращение к $tree, как ко множеству узлов -->
<xsl:value-of select='msxsl:node-set($tree)/item[1]'/>
</xsl:template>
</xsl:stylesheet>
К сожалению, текущая версия MSXML не поддерживает расширение пользовательскими элементами.
Процессор Xalan
Основные характеристики.
□ Платформы: Java, С++.
□ Расширения: функции и элементы расширения.
□ Полнота реализации: один из наиболее проработанных процессоров. □ Разработчик: Apache XML Project.
□ URL: http://xml.apache.org.
Xalan — это очень известный XSLT-процессор, созданный в рамках Apache XML Project для языковых платформ Java и С++. Xalan, как и остальные продукты Apache XML Project, поставляется с открытым исходным кодом и открытым API, что делает его очень привлекательным для интеграции в другие приложения.
Использование
По сути дела, Xalan Java и Xalan C++ — это библиотеки, позволяющие использовать XSLT-