Как установить для логической переменной XSLT значение true, если атрибут пуст или не существует? - PullRequest
1 голос
/ 18 августа 2011

Когда атрибут отсутствует или является пустым, я хочу, чтобы моя переменная была установлена ​​на 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 ]

2 голосов
/ 19 августа 2011

Используйте

string-length(@incollection) > 0

Если вы хотите исключить атрибут, строковое значение которого является только пробелами, используйте:

string-length(normalize-space(@incollection)) > 0
1 голос
/ 18 августа 2011

Лично я был бы склонен попробовать что-то вроде

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

(непроверенные)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...