Чтение онлайн

ЖАНРЫ

Технология XSLT

Валиков Алексей Н.

Шрифт:

□ в преобразованиях не работают переменные, именованные шаблоны, шаблоны значений атрибутов, ключи и импортирование.

В случае обнаружения подобных признаков единственным советом является обновление версии MSXML в режиме замены.

Предупреждение

Перед установкой MSXML3 рекомендуется внимательно ознакомиться с документацией на предмет возможности установки в режиме замены. Некоторые программные продукты (такие, как SQL Server и Biztalk Server) используют старую версию XSLT-процессора, и обновление в режиме замены приведет к нестабильности их работы.

Использование

Так как MSXML

уже давно превратился в стандартный компонент Windows, использовать его можно разными способами - например, в собственных приложениях или как ISAPI-расширение. При разработке XSLT-преобразований MSXML, как правило, применяется либо совместно с браузером Internet Explorer, либо как самостоятельная утилита командной строки.

Первый способ заключается в том, что с XML-документом посредством инструкции

xml-stylesheet
ассоциируется преобразование и Internet Explorer отображает результат преобразования.

Пример
Листинг П1.1. Входящий документ source.xml

<?xml-stylesheet type="text/xsl" href="#"?>

<date>18.10.2001</date>

Листинг П1.2. Преобразование stylesheet.xsl

<?xml version="1.0" encoding="windows-1251"?>

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">

<html>

<head>

<title>Today is page</title>

</head>

<body>

<xsl:apply-templates select="date"/>

</body>

</html>

 </xsl:template>

 <xsl:template match="date">

<H1>

<xsl:text>Сегодня </xsl:text>

<xsl:value-of select="."/>

</H1>

 </xsl:template>

</xsl:stylesheet>

Документ source.xml будет отображен в браузере Internet Explorer следующим образом (рис. П1.4).

Рис. П1.4. Документ source.xml, отображенный браузером Internet Explorer

Другим, вариантом является использование утилиты командной строки

msxsl.exe
, которая также доступна на Web-сайте MSDN. Эта утилита есть не более чем оболочка для MSXML, позволяющая вызывать основной компонент из командной строки.

Использование

msxsl.exe
совершенно стандартно: для применения преобразования
stylesheet.xsl
к документу
source.xml
и вывода результата в файле
result.xml
нужно выполнить следующую команду:

msxsl.exe source.xml stylesheet.xsl -о result.xml

Расширения

MSXML

поддерживает пользовательские функции расширения, которые могут быть написаны на скриптовых языках VBScript и JScript и включены непосредственно в сами преобразования.

Пример
Листинг П1.3. Входящий документ

<?xml version="1.0" encoding="windows-1251"?>

<page>Сегодня <date/>.</page>

Листинг П1.4. Преобразование

<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>

Листинг П1.5. Выходящий документ

<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
", и стандартным сценарием ее использования будет примерно следующий:

Поделиться с друзьями: