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当以第二种方式赋值时,这个变量被赋值为期望值。

Method1和的返回类型Method2都是XmlDocument。我认为有什么问题<xsl:value-of>。分配此变量的正确方法是什么?

更新 我已经通过以下代码解决了这个问题:

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

对于第二个变量,我使用了以下代码:

<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 回答