Birgit: Tabelle

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

  1. 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">

    xsl:apply-templates/

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

    1. 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">

      xsl:apply-templates/

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