Книга: Технология XSLT
Расширения
Разделы на этой странице:
Расширения
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
", и стандартным сценарием ее использования будет примерно следующий:
<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 не поддерживает расширение пользовательскими элементами.
- Расширения SQL
- Файлы без расширения, как правило, текстовые. Как сделать, чтобы при двойном щелчке кнопкой мыши они открывались в Блокн...
- На DVD с фильмами имеются файлы с расширениями VOB и IFO. Какие из них содержат меню диска и можно ли его как-нибудь изм...
- Парадокс расширения-специализации
- Что такое расширения?
- 12.7. Расширения метасимволов
- Как подтолкнуть покупателей к выбору дешевой торговой марки посредством расширения ассортимента
- Расширения файлов
- Раздел расширения
- Приложение 3 Полезные платы расширения
- Глава 4. Как транснациональные компании выбирают мировые городские рынки для расширения бизнеса
- Шины расширения, представленные слотами и разъемами на материнской плате