У меня есть два файла XSLT A .xslt и B .xslt, где A .xslt включает B .xslt.
A .xslt
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my_namespace">
<my:data>This is A.xslt</my:data>
<xsl:include href="B.xslt"/>
<xsl:template name="my_template">
<xsl:value-of select="$remote-data"/>
</xsl:template>
</xsl:stylesheet>
B .xslt
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my_namespace">
<xsl:variable name="remote-data"
select="document('')/*/my:data" />
</xsl:stylesheet>
Конечно, когда my_template оценивается, выводится пустая строка. Это происходит потому, что B .xslt не может my: data контейнер и document('')
вызов обрабатывается перед включением .
Мой вопрос: как я могу получить доступ к my: data из B .xslt (сделать document('')
для обработки после включения )?
Любые идеи приветствуются!
Обновление: В реальной жизни у меня есть несколько файлов, таких как A .xslt: A1 .xslt, A2 .xslt ,. .. и в результате необходимо выполнить точно такие же вычисления с набором узлов (как в определении $remote-data
), но с другими параметрами (сохраненными в my: data ).
Можно сказать, что я могу использовать именованный шаблон для этого. Но, насколько я вижу, это невозможно сделать, потому что шаблон будет возвращать RTF, который у меня есть node-set()
, который обычно недоступен в синтаксических анализаторах XSLT 1.0.
Надеюсь, это прояснит мою проблему.