将模板应用于从XPATH变量获取的节点

时间:2016-11-29 19:00:30

标签: xml xslt xpath

我正在使用XSLT 1.1,我有一个我正在访问的外部文档:

<xsl:variable name="doc2URI" select="ancestor-or-self::book/@secondDoc"/>
<xsl:variable name="doc2" select="document($doc2URI)"/>

我要做的是为本文档中的节点应用模板,该模板由XSLT变量中的XPath表达式获取:

<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表达式将模板应用于该外部文档?

1 个答案:

答案 0 :(得分:0)

您基本上在寻找XSLT的eval。这是al XSLT 3.0 feature

在早期版本中,您需要一个扩展程序。参见:

  

XSL. Evaluate expression