如果属性为空或不存在,如何将XSLT布尔变量设置为true?

时间:2011-08-18 11:18:00

标签: xslt

当某个属性缺失或为空时,我希望我的变量设置为false()

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=''"/>

虽然第二个表达对我有用,但我想知道是否有更好,更惯用的方式来编写这个表达式?

2 个答案:

答案 0 :(得分:2)

使用

string-length(@incollection) > 0

如果要排除字符串值仅为空格的属性,请使用:

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

答案 1 :(得分:1)

我个人倾向于尝试类似

的东西

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

(未测试的)