我正在调用一个返回节点集的模板,我试图将其存储在变量上,但它只返回值而不是节点名称
<MaxData>
<xsl:variable name="maxP">
<xsl:call-template name="MaxPeaks"/>
</xsl:variable>
</MaxData>
<xsl:template name="MaxPeaks">
<DailyPeakDmds>
<xsl:text>Test1</xsl:text>
</DailyPeakDmds>
<DailyPeakDmds>
<xsl:text>Test2</xsl:text>
</DailyPeakDmds>
</xsl:template>
发送节点设置为 c# 代码文件:
<xsl:value-of select="code:GetMax($maxP)"/>
但是在 c# 方法中,它给出的结果是"Test1 Test2",但我需要这样的结果:
<DailyPeakDmds>
Test1
</DailyPeakDmds>
<DailyPeakDmds>
Test2
</DailyPeakDmds>
当我测试变量"maxP"时,它包含"Test1 Test2"值,并且不包含节点名称,任何人都可以帮助我如何获取节点集并存储它。
<xsl:value-of select="code:GetMax($maxP)"/>
将 maxP
变量中包含的结果树片段传递给扩展函数,然后将该扩展函数的返回值转换为字符串,并将该字符串值包含在输出中。 如果函数返回节点集或其他结果树片段,并且您希望将这些节点按原样包含在输出中(而不仅仅是节点集的字符串值),则应使用 copy-of
而不是 value-of
。
<xsl:copy-of select="code:GetMax($maxP)"/>
如果函数希望其参数是节点集而不是结果树片段,则需要使用扩展函数来转换$maxP
。 既然你提到了 C#,我假设你使用的是 .NET XSLT 处理器,在这种情况下,你可能想要 msxsl:node-set 函数
<xsl:copy-of select="code:GetMax(msxsl:node-set($maxP))" />
通过给出节点集的路径来回答我自己,如下所示
<xsl:copy-of select="code:GetMax(msxsl:node-set($maxP)/DailyPeakDmds/*)" />