Это могло бы быть немного более эффективным, потому что подсчет всех атрибутов не требуется , и оценка может быть немедленно остановлена при поиске первого дочернего элемента, для которого условие @attribute = 'true'
равно false()
.
<xsl:if test="not(*[not(@attribute = 'true')])">
<fo:table-row/>
</xsl:if>
Объяснение
Это еще одно применение правила двойного отрицания :
for every $x some property-y is true
эквивалентно:
there isn't any $z in $x such that for $z property-y is not true