У меня есть таблица стилей XSLT 1.0, запущенная с использованием процессора XSL, включенного в PHP (libxml).Я хочу, чтобы в идеале одна и та же таблица стилей работала на процессоре Microsoft XSL MSXML 6.0 (msxml6.dll), чтобы одну и ту же таблицу стилей можно было запускать на любом процессоре.по одному на каждый процессор.
Этот фрагмент вызывает функцию node-set () на процессоре PHP;
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl">
<xsl:template match="root">
<xsl:variable name="rtf">
<a>hello</a><b>world</b>
</xsl:variable>
<xsl:variable name="ns" select="exsl:node-set($rtf)"/>
<xsl:copy-of select="$ns/b"/>
</xsl:template>
</xsl:transform>
Этот фрагмент вызывает функцию node-set () на процессоре Microsoft;
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
extension-element-prefixes="msxsl">
<xsl:template match="root">
<xsl:variable name="rtf">
<a>hello</a><b>world</b>
</xsl:variable>
<xsl:variable name="ns" select="msxsl:node-set($rtf)"/>
<xsl:copy-of select="$ns/b"/>
</xsl:template>
</xsl:transform>
Если входной документ был;
<root/>
Результатом обеих таблиц стилей будет;
<b>world</b>
Я хочу одну таблицу стилей, которая может работать без измененийна процессоре PHP и процессоре Microsoft.
Хотя моя настоящая таблица стилей имеет длину около 400 строк, а функция node-set () используется в четырех местах, я надеюсь, что приведенные выше примеры демонстрируют проблему.