我在我的XSLT中使用一个变量来选择正确的节点然后我想使用这个变量来检索它的子节点:
<xsl:variable name="CorrectNode">
<xsl:choose>
<xsl:when test="$Formula='14'">
<xsl:value-of select="f:node14" />
</xsl:when>
<xsl:when test="$Formula='15'">
<xsl:value-of select="f:node15" />
</xsl:when>
</xsl:choose>
</xsl:variable>
<Revenue>
<xsl:value-of select="msxsl:node-set($CorrectNode)/f1:revenueValue" />
</Revenue>
但是,它不会输出任何内容。如果我有:
<xsl:value-of select="msxsl:node-set($CorrectNode)" />
或
<xsl:copy-of select="msxsl:node-set($CorrectNode)" />
然后输出值或节点,但如何访问其子节点?
答案 0 :(得分:0)
此代码段将变量设置为由一个文本节点组成的结果树片段,该节点的值是相应元素的字符串值。变量不引用元素本身,只引用其字符串值。
但是你根本不需要RTF和node-set
函数,因为你可以使用适当的谓词使用直接select
,因为test
表达式不是上下文-dependent(类似$Formula = '15'
的测试给出相同的值,无论当前上下文是f:node15
元素还是其父元素):
<xsl:variable name="CorrectNode"
select="f:node14[$Formula = '14'] | f:node15[$Formula = '15']" />
这样变量就是对原始元素的引用,您可以使用XPath从那里导航。