我对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的混合体。
提前致谢
答案 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表达式的事实,它只有两个位置步骤,并且没有谓词。