Zyrano: Tabelle mit Hilfe von XSL darstellen

Hi, da ihr mir letztes mal so prima helfen konntet hoffe ich, dass das jetzt wieder so gut klappt.
Also ich habe z.B. folgende xml datei:

<?xml version="1.0" encoding="iso-8859-1"?>  
<?xml-stylesheet type="text/xsl" href="style.xsl"?>  
<europa>  
   <land>  
  <number>1</number>  
     <name>Deutschland</name>  
   </land>  
   <land>  
     <number>2</number>  
     <name>Frankreich</name>  
   </land>  
   <land>  
     <number>3</number>  
     <name>Spanien</name>  
   </land>  
  <land>  
    <number>4</number>  
    <name>Niederlande</name>  
  </land>  
  <land>  
    <number>5</number>  
    <name>Polen</name>  
  </land>  
  <land>  
    <number>6</number>  
    <name>England</name>  
  </land>  
</europa>  

Nun ist es ja kein Problem eine Tabelle mit folgender struktur zu erstellen:
1 Deutschland
2 Frankreich
3 Spanien
usw...

aus Platzgründne würde ich die oben gezeigten Daten aber gerne wie folgt darstellen:
1 Deutschland  2 Frankreich
3 Spanien      4 Niederlande
5 Polen        6 England

habt ihr da eine Idee wie ich das am besten bewerkställigen könnte?

Mein erster Ansatz war, dass ich eine grosse tabelle mit einer Zeile und und 2 Spalten schaffe. in der linken spalte dann eine tabelle mit den ungeraden zahlen und recht eine mit den gerade zahlen.
das hat auch prima funktioniert, aber sobald ein land dabei war, das länger als eine zeile war hat dies einen zeilenumbruch gemacht. und das hat das alles verschoben.

ich hoffe ich konnte mein problem gut darstellen.

Vielen Dank schonmal.

  1. guck ma auf www.w3schools.com/xsl

    das steht was über die darstellung mit tabellen

    hier z.b.
    http://www.w3schools.com/xsl/xsl_sort.asp

  2. Hallo,

    aus Platzgründne würde ich die oben gezeigten Daten aber gerne wie folgt darstellen:
    1 Deutschland  2 Frankreich
    3 Spanien      4 Niederlande
    5 Polen        6 England

    habt ihr da eine Idee wie ich das am besten bewerkställigen könnte?

      
    <?xml version="1.0" encoding="iso-8859-1"?>  
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dig="http://www.dig.org">  
     <xsl:template match="/">  
      <html>  
       <head> <title>foo</title> </head>  
       <body>  
        <xsl:apply-templates/>  
       </body>  
      </html>  
     </xsl:template>  
     <xsl:template match="europa">  
      <table>  
       <xsl:call-template name="land">  
        <xsl:with-param name="node" select="land"/>  
        <xsl:with-param name="count" select="1"/>  
        <xsl:with-param name="maxcount" select="count(land)"/>  
       </xsl:call-template>  
      </table>  
     </xsl:template>  
     <xsl:template name="land">  
      <xsl:param name="node"/>  
      <xsl:param name="count"/>  
      <xsl:param name="maxcount"/>  
      <xsl:if test="($count mod 2 = 1) and ($count &lt; $maxcount)">  
       <tr>  
        <td>  
         <xsl:value-of select="$node[number  =  $count]/number"/>  
        </td>  
        <td>  
         <xsl:value-of select="$node[number  =  $count]/name"/>  
        </td>  
        <td>  
         <xsl:value-of select="$node[number  =  ($count + 1)]/number"/>  
        </td>  
        <td>  
         <xsl:value-of select="$node[number  =  ($count + 1)]/name"/>  
        </td>  
       </tr>  
       <xsl:call-template name="land">  
        <xsl:with-param name="node" select="$node"/>  
        <xsl:with-param name="count" select="$count + 2"/>  
        <xsl:with-param name="maxcount" select="$maxcount"/>  
       </xsl:call-template>  
      </xsl:if>  
     </xsl:template>  
    </xsl:stylesheet>  
      
    Grüße  
    Thomas  
    
    
    1. ... Nachtrag

      die if-Abfrage im Template muss wie folgt lauten:

      <xsl:if test="($count mod 2 = 1) and ($count &lt;= $maxcount)">

      damit auch ungerade Anzahl an Länder ausgegeben werden + zwei leere Zellen dann auch.

      Grüße
      Thomas

      1. Vielen Dank für deine Hilfe, das hat prima funktioniert.
        Jetzt hätte ich wohl noch eine kleine erweiterung. Wie würde das wohl aussehen, wenn die aufzählung nicht bei 1 sondern bei eienr geraden zahl anfängt.

        das sollte dann natürlich z.b. so aussehen:

        8 Deutschland  9 Frankreich
        10 Spanien     11 Niederlande

        usw....

        Vielen Dank nochmal für deine Hilfe bis hier hin.

        1. Hallo,

          Jetzt hätte ich wohl noch eine kleine erweiterung. Wie würde das wohl aussehen, wenn die aufzählung nicht bei 1 sondern bei eienr geraden zahl anfängt.

          War das eine Frage.(sic!)

          das sollte dann natürlich z.b. so aussehen:

          8 Deutschland  9 Frankreich
          10 Spanien     11 Niederlande

          usw....

          ...
             <tr>
              <td>
               <xsl:value-of select="$node[position()  =  $count]/number"/>
              </td>
              <td>
               <xsl:value-of select="$node[position( ) =  $count]/name"/>
              </td>
              <td>
               <xsl:value-of select="$node[position( ) =  ($count + 1)]/number"/>
              </td>
              <td>
               <xsl:value-of select="$node[position()  =  ($count + 1)]/name"/>
              </td>
             </tr>[/code]
          ....

          alles andere bleibt unverändert.

          Grüße
          Thomas

          1. Prima, hat wunderbar funktioniert.

            Danke für deine Hilfe