У меня проблема с xsl: include и xsl: apply-templates. Я делаю некоторые эксперименты с динамическим QName в xsl: call-template, и я нашел способ, как это сделать, но ... он работает только «inline», а не во включенном файле.apply-templates не работает с включенным файлом
Если я сделаю это, она работает хорошо (один файл - file.xsl) - это показать текст "тест" из шаблона матча:
<xsl:variable name="template" select="document('')/*/xsl:template"/>
<xsl:template match="xsl:template[@name='test']" name="test">
test
</xsl:template>
<xsl:template match="root">
<xsl:apply-templates select="$template[@name = $show]"/>
</xsl:template>
($ шоу = 'тест')
Но, если я поместил первую часть в другой файл, например template.xsl, а затем я буду называть его с помощью xsl: include, он НЕ работает. У меня нет идеи, почему.
<xsl:variable name="template" select="document('')/*/xsl:template"/>
<xsl:include href="template.xsl" />
<xsl:template match="root">
<xsl:apply-templates select="$template[@name = $show]"/>
</xsl:template>
Есть ли кто-нибудь, кто может мне помочь в этом, пожалуйста? XSL: включить должны поместить содержимое filename.xsl на родительский шаблон, но это выглядит, как это было не
Примечание: У меня есть XSLT 1.0
Edit 2015-12-10: Спасибо вам ребята за указание к проблеме. Я устанавливаю путь к документу ('') динамически, и он работает как шарм! Очевидно, проблема заключалась в том, что этот пустой документ (''), большое спасибо Майклу и другим.
<xsl:variable name="path"><xsl:value-of select="$show"/>.xsl</xsl:variable>
<xsl:variable name="templatePath" select="document($path)/*/xsl:template"/>
...
...
<xsl:template match="root">
<xsl:apply-templates select="$template[@name = $show]"/>
</xsl:template>
Вы хотите добавить ввод, вывод и полный xslt, который вы уже пробовали? – Rao
Из xpath в вашем матче, я думаю, вы используете этот шаблон самостоятельно. То есть вы используете тот же файл, что и вход и преобразование. При преобразовании в заменен ссылочным файлом, на входе это не так. –