2011-08-18 13 views
1

當屬性缺失或爲空時,我想將我的變量設置爲false()如果某個屬性爲空或不存在,如何將XSLT布爾變量設置爲true?

XML:

<cd name="One" /> 
<cd name="Two" incollection=""/> 
<cd name="Three" incollection="true"/> 

XSL:

<!-- this will only set to false when attribute is missing --> 
<xsl:variable name="incollection" select="boolean(@incollection)"/> 
<!-- this will set to false both when attribute is missing or is empty--> 
<xsl:variable name="incollection2" select="boolean(@incollection) or @incollection=''"/> 

雖然第二次表達對我的作品,我想知道是否有寫這表達更好,更地道的方式?

+0

@empo您正在使用哪種XSLT處理器?不適合我,例如,內置在Chrome或Java Xalan中的XSLT處理器 –

+0

好問題,+1。查看我的答案,瞭解兩種可選的單行XPath表達式。 –

回答

2

使用東西:

string-length(@incollection) > 0 

如果要排除其字符串的屬性值僅爲空白,請使用:

string-length(normalize-space(@incollection)) > 0 
+0

只是試了一下,它的工作,謝謝。 –

+0

@Tahir Akhtar:不客氣。 –

1

個人而言,我會傾向於嘗試像

select="count(@incollection != '') > 0

(未經測試)

+0

看起來很酷,但我認爲有可能是一個功能或一些易於閱讀的功能 –

相關問題