在XSLT中将参数传递给C#函数

时间:2017-01-24 08:59:12

标签: c# xslt

我有这样的XML和XSLT:

XML

<process id="1"> 
  <task id="task1">
  </task>
  <task id="task2">
  </task> 
  ...
</process>

XSLT

<msxsl:script language="C#" implements-prefix="user">

    <![CDATA[
      public string GetStartTask(int ProcessID)
       {         
          return StartTask(ProcessID);
        }
    ]]>

</msxsl:script>

...
<xsl:if test="@id = user:GetStartTask(<xsl:value-of select="/../@id"/>)">
   ...
</xsl:if>
...

StartTask是返回字符串的方法。)

在上面的代码中,我尝试将process id传递给GetStartTask函数:

<xsl:value-of select="/../@id"/>

但是这段代码不正确。我阅读了很多帖子,但我找不到这个问题的语法。

如果有人能解释这个问题的解决方案,那将非常有帮助。

2 个答案:

答案 0 :(得分:1)

你打算写:

<xsl:if test="@id = user:GetStartTask(../@id)">

这假设您处于task的上下文中,并且您希望将当前任务id的值与GetStartTask()返回的值进行比较以父进程id作为参数的函数。

答案 1 :(得分:0)

如果您当前的上下文为<task>,则应尝试

<xsl:value-of select="../@id" />

作为XSLT表达式。