Tabelle
Birgit
- xsl
Hallo zusammen!
Ich habe mal wieder eine (große) Frage zu XSL: wie kann ich aus folgender XML-Datei eine Tabelle erzeugen bzw. wie kann ich genau bestimmen, welcher Wert ausgelesen werden soll, wo doch die Tags immer gleich heißen, um die nachfolgende Tabelle (nach XML-Datei) zu erhalten?
Hier erstmal ein Ausschnitt aus der XML-Datei:
...
<catgry>
<catStat>
<table>
<tgroup cols="11">
<colspec colnum="1" colname="Value"/>
<colspec colnum="2" colname="F"/>
<colspec colnum="3" colname="B"/>
<colspec colnum="4" colname="NL"/>
<colspec colnum="5" colname="D-W"/>
<colspec colnum="6" colname="I"/>
<colspec colnum="7" colname="L"/>
<colspec colnum="8" colname="DK"/>
<colspec colnum="9" colname="IRL"/>
<colspec colnum="10" colname="GB"/>
<colspec colnum="11" colname="NIRL"/>
<thead>
<row>
<entry colname="Value"/>
<entry colname="F">F</entry>
<entry colname="B">B</entry>
<entry colname="NL">NL</entry>
<entry colname="D-W">D-W</entry>
<entry colname="I">I</entry>
<entry colname="L">L</entry>
<entry colname="DK">DK</entry>
<entry colname="IRL">IRL</entry>
<entry colname="GB">GB</entry>
<entry colname="NIRL">NIRL</entry>
</row>
</thead>
<tbody>
<row>
<entry colname="Value">1</entry>
<entry colname="F">115</entry>
<entry colname="B">102</entry>
<entry colname="NL">179</entry>
<entry colname="D-W">85</entry>
<entry colname="I">126</entry>
<entry colname="L">107</entry>
<entry colname="DK">184</entry>
<entry colname="IRL">89</entry>
<entry colname="GB">83</entry>
<entry colname="NIRL">14</entry>
</row>
<row>
<entry colname="Value">%</entry>
<entry colname="F">11.6</entry>
<entry colname="B">10.3</entry>
<entry colname="NL">17.8</entry>
<entry colname="D-W">8.4</entry>
<entry colname="I">12.8</entry>
<entry colname="L">18.3</entry>
<entry colname="DK">18.5</entry>
<entry colname="IRL">9.1</entry>
<entry colname="GB">7.7</entry>
<entry colname="NIRL">4.7</entry>
</row>
<row>
<entry colname="Value">2</entry>
<entry colname="F">376</entry>
<entry colname="B">401</entry>
<entry colname="NL">550</entry>
<entry colname="D-W">401</entry>
<entry colname="I">401</entry>
<entry colname="L">289</entry>
<entry colname="DK">336</entry>
<entry colname="IRL">359</entry>
<entry colname="GB">330</entry>
<entry colname="NIRL">75</entry>
</row>
<row>
<entry colname="Value">%</entry>
<entry colname="F">37.9</entry>
<entry colname="B">40.3</entry>
<entry colname="NL">54.7</entry>
<entry colname="D-W">39.6</entry>
<entry colname="I">40.7</entry>
<entry colname="L">49.3</entry>
<entry colname="DK">33.8</entry>
<entry colname="IRL">36.5</entry>
<entry colname="GB">30.7</entry>
<entry colname="NIRL">25.3</entry>
</row>
... hier geht`s immer weiter!
Und so soll es nachher aussehen (Tabellenrahmen muss man sich denken):
Value F B NL D-W I L DK ....
1 115 102 179 85 126 107 184 ....
% 11.6 10.3 17.8 8.4 12.8 18.3 18.5 ....
2 376 401 550 401 401 289 336 ....
usw. usw.
Ist mein Problem klargeworden? Über Lösungsvorschläge bin ich sehr dankbar!
Birgit
Hallo Birgit,
Ich habe mal wieder eine (große) Frage zu XSL:
Die Größe einer Frage richtet sich nict nach der Größe der Quelldatei ;-)
wie kann ich aus folgender XML-Datei eine Tabelle erzeugen bzw. wie kann ich genau bestimmen, welcher Wert ausgelesen werden soll, wo doch die Tags immer gleich heißen, um die nachfolgende Tabelle (nach XML-Datei) zu erhalten?
?
Mal im Ernst: warum probierst du es nicht mal zuerst selbst und zeigst uns was du probiert hast. Wir (sind keine Codemaschinen. Dein Problem - so wie ich es verstehe - ist vom Ansatz her nämlich wirklich reine Grundlagen von XSLT.. Was also hast du nicht genau verstanden bzw. was klappt nicht?
Und so soll es nachher aussehen (Tabellenrahmen muss man sich denken):
Value F B NL D-W I L DK ....
1 115 102 179 85 126 107 184 ....
% 11.6 10.3 17.8 8.4 12.8 18.3 18.5 ....
2 376 401 550 401 401 289 336 ....
usw. usw.
Folgendes Stylesheet erledigt das rudimentär (ohne großes Formatieren):
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<html>
<body>
<table border="1">
</table>
</body>
</html>
</xsl:template>
<xsl:template match="row">
<tr>
xsl:apply-templates/
</tr>
</xsl:template>
<xsl:template match="entry">
<td><xsl:value-of select="."/></td>
</xsl:template>
</xsl:stylesheet>
Gruß
Franz
Hi.
Ich steig da mal mit ein.
Die Frage, die sich stellt, sind Deine Daten immer in der richtigen Reihenfolge oder nicht!
Ich füg unten mal was dazu
Value F B NL D-W I L DK ....
1 115 102 179 85 126 107 184 ....
% 11.6 10.3 17.8 8.4 12.8 18.3 18.5 ....
2 376 401 550 401 401 289 336 ....
usw. usw.
Folgendes Stylesheet erledigt das rudimentär (ohne großes Formatieren):
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<html>
<body>
<table border="1">
</table>
</body>
</html>
</xsl:template>
<xsl:template match="row">
<tr>
xsl:apply-templates/
</tr>
</xsl:template>
<xsl:template match="entry">
<td><xsl:value-of select=".[@colname='F']"/></td>
<td><xsl:value-of select=".[@colname='B']"/></td>....
???<td><xsl:value-of select="."/></td>
</xsl:template>
</xsl:stylesheet>
Gruß
Vor @colname könnte noch win ./ nötig sein!?
bydey
Franz