2013-11-07 5 views
1

Мне нужно ограничить для каждого выбора на основе переменной. Следующая переменная содержит количество отказов, если они есть, или успех, если они есть.XSL для каждого условного

xsl:choose><xsl:when test="$allFailureCount = 0">Success</xsl:when><xsl:when test="$allFailureCount > 0">Failure</xsl:when></xsl:choose> 

После этой линии у меня есть XSL для каждого оператора, как показано ниже, который перебирает все узлы, состоящие из неудач, а также успеха. Потребность в цикле через выбора отказа узлов в случае выхода из строя всех узлов и в случае выражения success.The для обнаружения узлов с неудач и успеха заключаются в следующем:

/testResults/*[attribute::s='false'] -Failure 
/testResults/*[attribute::s='true'] -Success 

Тогда мне нужно, чтобы ограничить следующий цикл

<xsl:for-each select="/testResults/*"> 

ответ

2

Вот как вы можете это сделать:

<xsl:for-each select="/testResults/*[($allFailureCount = 0) or @s='false']"> 
... 
</xsl:for-each> 

выражение XPath в наличии для каждого цикла будет выбрать все узлы в случае т здесь есть сбои и только узлы с атрибутом @s='false', когда есть сбои.

Вы можете использовать краткую и читаемую форму атрибутов ссылок. Например, @s - это то же самое, что и attribute::s.

+0

+1 Элегантное решение – Fernando

+0

Но оно не сгенерировало HTML после применения преобразования. Здесь что-то не так – Alfaromeo

+0

Да, что-то не так, но мы не знаем, что. Ошибка не в коде, который поставлялся @lliyan. –

Смежные вопросы