Xpath和参数

时间:2010-03-19 11:56:31

标签: xslt xpath

我对XSL相对较新,我认为这是一个基本问题。所以我最好早点道歉!

基本上,我想使用一个函数值。这将在模板中,我想将部分xpath作为参数传递。

<xsl:variable name="TEST_VAR">"h:elementA/elementB"</xsl:variable>

... and then use the variable  (or passed in param) as all (or part) of the xpath:

<xsl:element name="transformedElement"><xsl:value-of select=$TEST_VAR/></xsl:element>

我真的希望让xpath成为字符串文字和TEST_VAR的混合体。

提前致谢

2 个答案:

答案 0 :(得分:2)

你想做的事情无法完成。您无法将纯字符串解释为XSL转换中的XPath表达式。

但无论如何你不应该这样做。通过它的外观,您可以用以下内容替换您的示例以获得您想要的内容:

<xsl:variable name="TEST_VAR" select="h:elementA/elementB"/>
<xsl:element name="transformedElement">
  <xsl:value-of select="$TEST_VAR"/>
</xsl:element>

但是我怀疑你已经愚弄了你的榜样,以至于看到你真正想要的东西太简单了。


以下是使用Stack Overflow的快速提示:说明您实际需要做什么以及为什么遇到问题。您对此问题所做的工作被认为是您的问题的解决方案,并且如果可能的话就会询问Stack Overflow。它不是,因为我看不出你原来的问题,所以我对你的帮助比我已经有的多了。

下次提出问题时,请确保实际询问有关您所面临问题的问题,而不是您所面临问题的潜在解决方案。你会得到更好的答案。

答案 1 :(得分:0)

将所需的XPath表达式作为全局<xsl:param>传递。如果此全局参数的名称为vQuery,则可以使用此类代码

<xsl:element name="transformedElement"> 
  <xsl:value-of select=
     "*[name() = substring-before($vQuery, '/')]
                 /*[name() = substring-after($vQuery, '/')]"/> 
</xsl:element>

这种技术通常要求您对将要传递的XPath表达式有很多了解。在这种情况下,它依赖于这是一个相对XPath表达式的事实,它只有两个位置步骤,并且没有谓词。