2010-05-05 69 views
2

我有一个:XSLT PARAM条件检查

<xsl:param name="SomeFlag" /> 

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

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

这是我们如何评价国旗?

我设置帕拉姆在C#为:

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

任何想法?

+0

很好的问题(+1)。 – 2010-05-05 20:24:32

回答

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

此测试,如果$SomeFlag等于名为“真”的元素,这是当前节点的第一个孩子的字符串值。

你想要的是

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

我同意Dimitre,但有一个加法:

你的情况,你可以使用:

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

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

这让我通过转换成数字(然后隐式布尔值),而不是比较字符串字面试验条件:

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

我从来没有建议比较一个串文字!请阅读我的答案并理解它。另外,请注意,OP会设置要从C#测试的值并使用*布尔值*值!所以,你的加入(虽然通常很有用),并不回答这个问题。 – 2010-05-06 03:36:14

+1

@Dimitre Novatchev:我明白你的答案,我的想法是使用0和1而不是布尔值。因此,如果OP将该值序列化到输入树而不是作为参数传递,则该方法将保持不变。 – newtover 2010-05-06 05:55:05