Я использую XSLT 1.1 и у меня есть внешний документ, я доступ как так:Применить шаблоны к узлу, полученный из переменной XPATH
<xsl:variable name="doc2URI" select="ancestor-or-self::book/@secondDoc"/>
<xsl:variable name="doc2" select="document($doc2URI)"/>
То, что я пытаюсь сделать, это применить шаблон узел в этом документе, который получают с помощью выражения XPath, найденного в переменной XSLT:
<xsl:variable name="xpath">
<xsl:call-template name="genPath"/>
</xsl:variable>
$xpath
переменной, например, может в какой-то момент в коде содержит результат: /book[1]/title[1]
.
То, что я хотел бы сделать, это:
<xsl:apply-templates select="$doc2/$xpath"/>
Но это не работает. Если я пойду:
<xsl:apply-templates select="$doc2/book[1]/title[1]"/>
Это действительно работает, но я не буду точно знать точное выражение XPath. Он будет доступен только через переменную $xpath
.
Мой вопрос в том, как я могу применить шаблон к этому внешнему документу через выражение XPath, содержащееся в переменной $xpath
?
Это очень маловероятно, что вы используете XSLT 1.1 - который был рабочий проект опубликован в 2001 году, а затем отказались. Были реализации, но они либо перешли на XSLT 2.0 (например, саксон), либо исчезли с лица земли (например, jd.xslt). –
Я думаю, что это может быть 1.1. Это находится на вершине моей таблицы стилей –
Вы можете написать version = "93.7" в верхней части таблицы стилей, но это не соответствовало бы версии 93.7 XSLT. –