У меня есть два файла XSLT .xslt и B .xslt, где .xslt включаетB .xslt.XSLT включают и документ ('') столкновения
.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>
Б .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: данные контейнер и document('')
звонок обрабатывается до этого включают.
Мой вопрос: как я могу получить доступ к мои данные: от B .xslt (Make document('')
быть обработаны после включения)?
Любые идеи оцениваются!
Update: В реальной жизни у меня есть несколько файлов, такие как .xslt: A1 .xslt, A2 .xslt, ... и это нужно сделать в точности те же самые расчеты с узлами, как результат (как в определении $remote-data
), но с различными параметрами (хранится в my: data).
Можно сказать, что я могу использовать именованный шаблон для этого. Но, насколько я вижу, это невозможно сделать, потому что шаблон вернет RTF, который у меня есть node-set()
, который, как правило, недоступен в синтаксисе XSLT 1.0.
Надеюсь, это прояснит мою проблему.
Хороший вопрос, +1. См. Мой ответ на два возможных решения. –