Czy można umieścić dwa warunki w atrybutie testu xslt?

Czy to jest odpowiednie dla 4

<xsl:when test="4 &lt; 5 AND 1 &lt; 2" >
<!-- do something -->
</xsl:when>
 111
Author: joe, 2008-11-26

4 answers

Nie do końca, I musi być pisane małymi literami.

<xsl:when test="4 &lt; 5 and 1 &lt; 2">
<!-- do something -->
</xsl:when>
 192
Author: phihag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-25 21:18:41

Musi być zawinięte w , ponieważ jest to when. I małymi literami "i".

<xsl:choose>
   <xsl:when test="4 &lt; 5 and 1 &lt; 2" >
   <!-- do something -->
   </xsl:when>
   <xsl:otherwise>
   <!-- do something else -->
   </xsl:otherwise>
</xsl:choose>
 31
Author: Aaron Palmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-25 21:21:13

Z XML.com :

Jak instrukcje xsl:if, xsl: when elementy mogą mieć bardziej rozbudowane treści między ich rozpoczęciem - i end-tags-na przykład dosłowny wynik elements, xsl: element elements, or even xsl: if I xsl: choose elements-to Dodaj do drzewa wyników. Ich test wyrażenia mogą również używać wszystkich triki i operatory, które xsl:jeśli atrybut testowy elementu może używać, takich as and, or, and function calls, to tworzenie bardziej złożonych elementów logicznych wyrażenia.

 6
Author: Harper Shelby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-25 21:18:04

Może jest to nie do pomyślenia dla XSLT-professional, ale dla mnie na poziomie początkującym/średnio zaawansowanym, to mnie zastanowiło. Chciałem zrobić dokładnie to samo, ale musiałem przetestować wartość responsetime z xml zamiast zwykłego numeru. Po tym wątku próbowałem tego:

<xsl:when test="responsetime/@value &gt;= 5000 and responsetime/@value &lt;= 8999"> 

Który wygenerował błąd. To działa:

<xsl:when test="number(responsetime/@value) &gt;= 5000 and number(responsetime/@value) &lt;= 8999">

Naprawdę nie rozumiem, dlaczego nie działa bez numeru (). Czy to możliwe, że bez funkcji number() wartość jest traktowana jako łańcuch znaków, a Ty nie możesz porównać liczb z ciągiem znaków?

W każdym razie, mam nadzieję, że to zaoszczędzi komuś dużo poszukiwań...

 4
Author: Ted,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-13 09:31:49