2016-08-07 19 views
1

Ich versuche, eine sehr einfache XML-Datei in eine sehr einfache HTML-Tabelle zu formatieren.Formatieren von XML als HTML Tabelle

Ich muss ein externes CSS-Stylesheet mit dem XSLT verwenden. Das Problem, auf das ich stoße, ist, dass es die Elemente nicht in bestimmte Zeilen aufteilt - wie alle Tag-Elemente in einer Zeile usw. Es werden alle in eine Zeile eingefügt. Andere Beispiele, die ich gesehen habe, sortieren sie alle in einzelne Reihen, also wette ich, dass ich gerade etwas lächerlich gemacht habe.

Danke fürs schauen!

xml: Dies ist nur ein Teil. Es gibt 5 Datensätze.

<?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> 

und meine 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> 

Und die CSS ist ziemlich einfach:

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;} 

Antwort

0

Das Problem ist, dass die <tr> und </tr> Tags, die rund um die <xsl:for-each> sind gehören innerhalb die <xsl:for-each>