我正在尝试使用在for-each中具有xpath的变量。但它给了我一个Expression必须评估到节点集的错误。
NodeName定义为
<xsl:variable name="NodeName" select="name(.)"/>
<xsl:variable name="SyncPath"
select="concat('/combinedxml/com.csc_PolicySyncRs/',$NodeName)"/>
这里是for-each循环
<xsl:for-each select="$SyncPath/*">
答案 0 :(得分:2)
我会猜测并假设您对将变量转换为节点集感兴趣,以便稍后在XPath中使用它。这可以使用扩展函数exsl:node-set()
来完成。 documentation有使用示例。
引用:
此用例显示结果 使用exsl:node-set()来转换 结果树片段到节点集。
<强>来源
<doc>
<one />
<two />
<three />
<four />
</doc>
<强>样式表强>
<!-- Test exslt:node-set applied to a result tree fragment -->
<xsl:variable name="tree">
<a>
<b>
<c>
<d />
</c>
</b>
</a>
</xsl:variable>
<xsl:template match="/">
<out>
<xsl:value-of select="count(exslt:node-set(//*))" />
</out>
</xsl:template>
<强>结果强>
<out xmlns:exslt="http://exslt.org/common">5</out>
答案 1 :(得分:1)
使用强>:
<xsl:variable name="SyncPath"
select="/combinedxml/com.csc_PolicySyncRs/*[name()=$NodeName]"/>
答案 2 :(得分:0)
XSLT 1.0(实际上是2.0)没有用于将XPath表达式构造为字符串然后对其进行评估的标准工具。许多处理器都有扩展功能来执行此操作,各种称为dyn:evaluate,saxon:evaluate等。