-1

ノード セットを返すテンプレートを呼び出して、それを変数に格納しようとしましたが、ノード名ではなく値のみを返します

<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」値が含まれ、ノード名が含まれていないため、ノードセットを取得して保存する方法がわかりません。

4

2 に答える 2

0

以下のようにノードセットへのパスを指定して、自分自身に答えてください。

<xsl:copy-of select="code:GetMax(msxsl:node-set($maxP)/DailyPeakDmds/*)" />
于 2012-12-06T08:01:25.887 に答える
0
<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))" />
于 2012-12-05T13:03:34.263 に答える