将XML格式化为HTML表格

时间:2016-08-07 03:18:20

标签: xml xslt

我正在尝试将一个非常简单的xml文件格式化为一个非常简单的HTML表格。

我必须使用带有XSLT的外部CSS样式表。我遇到的问题是它没有将元素分成特定的行 - 例如一行中的所有日元素等等。它将它们全部放在一行中。我见过的其他例子将它们全部分成不同的行,所以我打赌我做了一些荒谬的事情。

感谢您的期待!

xml:这只是一部分。共有5条记录。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="forecast.xsl"?>
<forecast week="June 1st 2016"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="forecast.xsd">
    <day>
        <Weekday>Monday</Weekday>
        <HiTemp>84</HiTemp> 
        <LoTemp>74</LoTemp> 
        <Wind>SSE 18 mph</Wind> 
        <Humidity>59%</Humidity> 
        <DewPoint>68 degrees</DewPoint> 
        <Visibility>10 miles</Visibility> 
        <UVIndex>4 of 10</UVIndex> 
        <Sunrise>6:01 AM</Sunrise>
        <Sunset>8:49 PM</Sunset>
    </day>
    <day>
        <Weekday>Tuesday</Weekday>
        <HiTemp>89</HiTemp> 
        <LoTemp>77</LoTemp> 
        <Wind>NW 6 mph</Wind> 
        <Humidity>68%</Humidity> 
        <DewPoint>54 degrees</DewPoint> 
        <Visibility>8 miles</Visibility> 
        <UVIndex>6 of 10</UVIndex> 
        <Sunrise>6:03 AM</Sunrise>
        <Sunset>8:51 PM</Sunset>
      </day>
    </forecast>

和我的xslt:

 <?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
    <html>
        <head>
            <title>Weekly Forecast</title>
            <link href="forecast.css"
                rel="stylesheet" />
        </head>
        <body>
            <h3>weekly Forecast</h3>
            <table border="1">
                <tr>
                    <th>Weekday</th>
                    <th>High Temp</th>
                    <th>Low Temp</th>
                    <th>Wind</th>
                    <th>Humidity</th>
                    <th>DewPoint</th>
                    <th>Visibility</th>
                    <th>UVIndex</th>
                    <th>Sunrise</th>
                    <th>Sunset</th>
                </tr>
                <tr>
                <xsl:for-each select="forecast/day">

                    <td><xsl:value-of select="Weekday"/></td>
                    <td><xsl:value-of select="HiTemp"/></td>
                    <td><xsl:value-of select="LoTemp"/></td>
                    <td><xsl:value-of select="Wind"/></td>
                    <td><xsl:value-of select="Humidity"/></td>
                    <td> <xsl:value-of select="DewPoint"/></td>
                    <td><xsl:value-of select="Visibility"/></td>
                    <td><xsl:value-of select="UVIndex"/></td>
                    <td><xsl:value-of select="Sunrise"/></td>
                    <td><xsl:value-of select="Sunset"/></td>

                </xsl:for-each>
                </tr>
            </table>
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>

css非常基本:

body{background-color:teal;
    margin:0 auto;
    }
table {border: 3px solid black;}
th {font-weight:bold;
    color:white;
    font-size:14px;
    display:block;}
tr {color:white;
    font-size:14px;
    display:block;}

1 个答案:

答案 0 :(得分:0)

问题是<tr>周围的</tr><xsl:for-each>标签属于里面的 <xsl:for-each>