xslt param条件检查

时间:2010-05-05 19:55:11

标签: c# xslt

我有一个:

<xsl:param name="SomeFlag" /> 

在我的XSLT模板中,我想对SomeFlag进行条件检查。目前我这样做:

<xsl:if test="$SomeFlag = true"> SomeFlag is true! </xsl:if>

这是我们评估旗帜的方式吗?

我将C#中的参数设置为:

xslarg.AddParam("SomeFlag", String.Empty, true);

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

<xsl:if test="$SomeFlag = true">

这将测试$SomeFlag是否等于名为“true”的元素的字符串值,该元素是当前节点的第一个子节点。

你想要的是

<xsl:if test="$SomeFlag = true()">

答案 1 :(得分:3)

我同意Dimitre,但还有一个补充:

在您的情况下,您可以使用:

<xsl:if test="$SomeFlag"> SomeFlag is true! </xsl:if>    

但是当我想在XSLT中评估标志时,我通常使用1和0作为布尔标志,特别是当我从属性或元素内容中获取值时。

这允许我通过转换为数字(然后隐式地为布尔值)来测试条件,而不是与字符串文字进行比较:

<xsl:if test="number($SomeFlag)"> SomeFlag is true! </xsl:if>