我有一个:
<xsl:param name="SomeFlag" />
在我的XSLT模板中,我想对SomeFlag进行条件检查。目前我这样做:
<xsl:if test="$SomeFlag = true"> SomeFlag is true! </xsl:if>
这是我们评估旗帜的方式吗?
我将C#中的参数设置为:
xslarg.AddParam("SomeFlag", String.Empty, true);
有什么想法吗?
答案 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>