我有这样的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"/>
但是这段代码不正确。我阅读了很多帖子,但我找不到这个问题的语法。
如果有人能解释这个问题的解决方案,那将非常有帮助。
答案 0 :(得分:1)
我想你打算写:
<xsl:if test="@id = user:GetStartTask(../@id)">
这假设您处于task
的上下文中,并且您希望将当前任务id
的值与GetStartTask()
返回的值进行比较以父进程id
作为参数的函数。
答案 1 :(得分:0)
如果您当前的上下文为<task>
,则应尝试
<xsl:value-of select="../@id" />
作为XSLT表达式。