我试图在输入xml文件上运行配置xml文件中编写的许多xpath查询:
<results>
<xsl:for-each select="$config_file/queries/*">
<xsl:variable name="curr_item_name" select="name()"></xsl:variable>
<xsl:variable name="curr_xpath_query" select="."></xsl:variable>
<xsl:element name="{$curr_item_name}">
<xsl:value-of select="dyn:evaluate($curr_xpath_query)" />
</xsl:element>
</xsl:for-each>
</results>
我期望有许多xml元素的子结果(与查询&#39;孩子一样多)带有xpath评估结果。
我得到所有标签都正确命名但是空。
Cana有人帮助我吗?由于处理器我正在使用Xalan eclipse嵌入式处理器(目前)。
谢谢, 劳拉
答案 0 :(得分:0)
那么您希望哪个节点成为XPath评估的上下文节点?目前,它是您使用$config_file/queries/*
处理的任何元素,并且您用它来提供XPath表达式。您可能希望将XPath表达式存储在变量中,然后将for-each
或apply-templates
的上下文更改为您未显示的其他节点,如果您之前未将其存储,则无法访问该节点一个变量。所以我们假设你有一个全局变量
<xsl:variable name="main-doc" select="/"/>
然后你可以使用例如。
<xsl:variable name="path-exp" select="."/>
<xsl:for-each select="$main-doc//foo">
<xsl:value-of select="dyn:evaluate($path-exp)" />
</xsl:for-each>