如何存储节点集



我正在调用一个返回节点集的模板,我试图将其存储在变量上,但它只返回值而不是节点名称

<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/*)" />

相关内容

  • 没有找到相关文章

最新更新