2010-05-05 70 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