在比较<=
中的值时,我想使用>=
和<xsl:if test="">
。怎么做?
更新
<?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=". < 1">
<td style="background-color: red;"><xsl:value-of select="." /></td>
</xsl:when>
<xsl:when test="1 <= . < 2">
<td style="background-color: blue;"><xsl:value-of select="." /></td>
</xsl:when>
<xsl:when test="2 <= . < 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 :(得分:4)
您可以分别将<
和>
转义为<
和>
。
请参阅w3schools上的xsl:if
示例。
更新
在看到你的状况后,我并不感到惊讶它不起作用。
而不是:
1 <= . < 2
尝试:
1 <= . and . < 2
您无法在XSLT中链接<
和>
。
答案 1 :(得分:2)
另外还有@ Oded的正确答案:
0.1。 在XSLT中永远不需要转义>
运算符。只需写下:>
0.2。 可以避免逃避<
运营商。
而不是:
x < y
你可以写:
not(x >= y)
而不是:
1 <= . and . < 2
你可以写:
2 > . and not(1 > .)
0.3。 在XPath 1.0中,<
和>
运算符未在字符串上定义(仅限于数字)。
最后,这实际上是一个XPath 1.0问题。