1

xslt を使用して、C# で xml を xml に変換しています。以下は、変数の割り当てが示されている xslt からの抜粋です。

<xsl:variable name="testvar">
  <xsl:choose>
   <xsl:when test="$condition">
     <xsl:value-of select="myUtils:Method1($var1,$var2)" /> 
   </xsl:when>
   <xsl:otherwise>
     <xsl:value-of select="myUtils:Method2($var1,$var2)" /> <!--Method1 and Method 2 are written in c# code.-->
   </xsl:otherwise>
  </xsl:choose>
</xsl:variable>

上記の割り当ては、以下の割り当てとは異なります。

<xsl:variable name="testvar" select="myUtils:Method1($var1,$var2)"/>

別の変数は、以下のように上記の変数に依存します。

<xsl:variable name="testvar2" select="$testvar/node()[1]/node()[1]/node()[1]/node()[1]"/>

この変数には$testvar、2 番目の方法で が割り当てられたときに期待される値が割り当てられます。

Method1との両方の戻り値の型Method2は ですXmlDocument。に何か問題があると思います<xsl:value-of>。この変数を割り当てる正しい方法は何ですか?

更新 次のコードで問題を解決しました:

<xsl:variable name="testvar"><xsl:copy-of select="myUtils:Method1($var1,$var2)"/></variable>

2 番目の変数については、以下のコードを使用しました。

<xsl:variable name="testvar2" select="msxsl:node-set($testvar)/node()[1]/node()[1]/node()[1]/node()[1]"/>

詳細については、このリンクを参照してください。

4

1 に答える 1

1

Method1関数は、単純なテキスト/数値ではなく、ノードセットを返すと推測しています。この場合、問題はおそらく、実際のノード自体ではなく、xsl:value-ofがノードの「値」を取得するためです。

代わりにxsl:copy-ofを使用してみてください

 <xsl:copy-of select="myUtils:Method1($var1,$var2)" /> 
于 2013-05-24T07:24:52.430 に答える