我通过XSLT样式表形成HTML文档。该文件中的表格包含一些降雨数据,最低温度和最高温度以及每天的太阳辐射。
我遇到的问题是,当我尝试检索最高温度并突出显示其单元格时,每次加载文件时都会崩溃浏览器。这是我到目前为止: weather.xsl
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : weather.xsl
Created on : September 30, 2015, 5:37 PM
Author : rory
Description:
Purpose of transformation follows.
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:variable name="year" select="2015"/>
<xsl:variable name="x" select="//measurement[@year=$year]"/>
<xsl:variable name="monthsOfYear" select="$x[@day=1]/month"/>
<xsl:variable name="daysOfMonth" select="$x[@month=1]/day"/>
<xsl:variable name="highestRainfall" select="$x/rainfall[.!=''][not( . < $x/rainfall)]"/>
<xsl:variable name="highestMinTemp" select="//temperature[@type='minimum' and .!=''][not( . < //temperature[@type='minimum'])]" />
<!-- TODO customize transformation rules
syntax recommendation http://www.w3.org/TR/xslt
-->
<xsl:template match="weather">
<html>
<head>
<title>Formatted Weather Outputs (Question 6)</title>
<style>
.odd{
background: lightgreen;
}
.even{
background: violet;
}
.negative{
color: red;
}
.highest{
background: gold;
}
</style>
</head>
<body>
<table border="1" style="text-align:center;border-collapse:collapse;">
<tr>
<th>Date (DD/MM/YYYY)</th>
<th>Min Temp (<sup>o</sup>C)</th>
<th>Max Temp (<sup>o</sup>C)</th>
<th>Solar Radiation (kwh)</th>
<th>Rainfall (mm)</th>
</tr>
<!-- Only display dates for 2015 -->
<xsl:for-each select="measurement[@year='2015']">
<tr>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="(@month mod 2 != 0)">odd</xsl:when>
<xsl:otherwise>even</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<td>
<xsl:value-of select="concat(@day, '/', @month, '/', @year)" />
</td>
<td>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="temperature[@type='minimum'] < 0">negative</xsl:when>
</xsl:choose>
</xsl:attribute>
<xsl:variable name="miniTemp" select="temperature[@type='minimum']" />
<xsl:if test=" $miniTemp = $highestMinTemp">
<xsl:attribute name="style">background-color:gold</xsl:attribute>
</xsl:if>
<xsl:value-of select="temperature[@type='minimum']" />
</td>
<td>
<xsl:value-of select="temperature[@type='maximum']" />
</td>
<td>
<xsl:value-of select="solar"/>
</td>
<td>
<xsl:if test=" rainfall = $highestRainfall">
<xsl:attribute name="style">background-color:gold</xsl:attribute>
</xsl:if>
<xsl:value-of select="rainfall" />
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
它特别崩溃在看起来如下的部分:
<xsl:variable name="miniTemp" select="temperature[@type='minimum']" />
<xsl:if test=" $miniTemp = $highestMinTemp">
<xsl:attribute name="style">background-color:gold</xsl:attribute>
</xsl:if>
如果有人能提供一些帮助或建议,我非常感激。
答案 0 :(得分:0)
在我自己的白痴中使用提供给我的代码,我没有调整我的变量$ x。更改以下行:
<xsl:variable name="highestMinTemp" select="//temperature[@type='minimum' and .!=''][not( . < //temperature[@type='minimum'])]" />
如此修改它:
<xsl:variable name="highestMinTemp" select="$x/temperature[@type='minimum' and .!=''][not( . < $x/temperature[@type='minimum'])]" />