2010-11-30 10 views
3

Ich möchte <= und >= beim Vergleichen von Werten in <xsl:if test=""> verwenden. Wie geht das?Verwendung <= and > = in XSLT

Update:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 

<html> 
    <body> 
     <h1>Average classsize per user and module</h1> 
     <table border="1"> 

      <tr> 
       <th>User Email</th> 
       <th>Module Code</th> 
       <th>Average Value</th> 
      </tr> 
      <xsl:apply-templates select="//classsize" /> 
     </table> 
    </body> 
</html> 

</xsl:template> 

<xsl:template match="average"> 
    <xsl:choose> 
     <xsl:when test=". &lt; 1"> 
      <td style="background-color: red;"><xsl:value-of select="." /></td> 
     </xsl:when> 

     <xsl:when test="1 &lt;= . &lt; 2"> 
      <td style="background-color: blue;"><xsl:value-of select="." /></td> 
     </xsl:when> 

     <xsl:when test="2 &lt;= . &lt; 3"> 
      <td style="background-color: yellow;"><xsl:value-of select="." /></td> 
     </xsl:when> 

     <xsl:otherwise> 
      <td style="background-color: white;"><xsl:value-of select="." /></td> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

<xsl:template match="//classsize"> 
    <tr> 
     <td><xsl:value-of select="email" /></td> 
     <td><xsl:value-of select="modulecode" /></td> 
     <xsl:apply-templates select="average" /> 
    </tr> 
</xsl:template> 

</xsl:stylesheet> 

average < 1 - in red 
1 <= average < 2 - in blue 
2 <= average < 3 - in yellow 
average >= 3 - white 
+0

Gute Frage, +1. Sehen Sie meine Antwort für Beispiele, wie Sie Vergleiche schreiben können, ohne '' 'zu entkommen. :) –

Antwort

2

In addidtion zu @ korrekte Antwort des Oded:

.1. Es besteht keine Notwendigkeit, den Operator > in XSLT zu umgehen. Schreiben Sie einfach: >

.2. Man kann vermeiden, den < Operator zu entkommen.

Statt:

x &lt; y 

können Sie schreiben:

not(x >= y) 

Statt:

1 &lt;= . and . &lt; 2 

können Sie schreiben:

2 > . and not(1 > .) 

.3. In XPath 1.0 sind die Operatoren < und > nicht für Strings (nur für Zahlen) definiert.

Schließlich, das ist eigentlich eine XPath 1.0 Frage.

+0

ok Herr, ich bleib dran Hut im Hinterkopf. Danke. – Moshin

+0

@Moshin: Gern geschehen. –

+2

+1 Gute Antwort. Auch statt 'x < y' könnte man es als' y> x' schreiben. –

4

können Sie entkommen die < und >-&lt; und &gt; sind.

Siehe das Beispiel für xsl:if auf w3schools.


Update:

Nach dem Sehen Sie konditionieren, ich bin nicht überrascht, dass es nicht funktioniert.

Statt:

1 &lt;= . &lt; 2 

Versuchen:

1 &lt;= . and . &lt; 2 

Sie können nicht Kette der < und > wie in XSLT.

+0

Moshin

+0

@Oded. Genau –

+0

Ich habe versucht, es auf diese Weise, aber es ist nicht alles, was anzeigt .. – Moshin

Verwandte Themen