dedlfix: value-of-select -> Tabelle unterteilen ??

Beitrag lesen

echo $begrueszung;

Habe mir eine Konvertierung von excel in xml gebastelt und in html mit xsl dargestellt.....
Problem: Die erzeugte Tabelle besteht aus 50 Zeilen und muss auf einer Seite 1024x768 angezeigt werden.

Wie kann ich z.B von 1-25 ausgeben und dann von 26-50 in einer Tabelle daneben ?

Vorab zur Information: Mein für diese Beispiele verwendetes XML sieht so aus:

<root>
    <zeile>1</zeile>
    <zeile>2</zeile>
    ...
  </root>

-----

Das einfachste sind hier geschachtelte Tabellen (auch wenn das nicht mehr state-of-the-art ist):

Man nehme eine Tabelle mit zwei nebeneinanderliegenden Zellen. Die Daten werden in zwei Teile geteilt und kommen jeweils in eine eigene Tabelle innerhalb der Zellen der Außentabelle.

Der erste Teil hat aufgerundet

<xsl:variable name="haelfte" select="ceiling(count(/root/zeile) div 2)" />

Elemente. Somit wird bei ungerader Elementzahl das überhängende Element zum ersten Teil gezählt.
(Dieses Statement gleich nach <xsl:stylesheet... einfügen.)

Die beiden Teile werden dann so angesprochen:

<xsl:for-each select="root/zeile[position() &lt;= $haelfte]">...
  <xsl:for-each select="root/zeile[position() &gt; $haelfte]">...

-----

Mit nur einer Tabellen wird's etwas komplizierter. Die Tabelle enthält pro Tabellenzeile jeweils ein Element aus Teil 1 und daneben eins von Teil 2.

Um die Elemente von Teil 2 anzusprechen nehme ich ein benanntes Template:

<xsl:template name="Teil2">
    <xsl:param name="position" />
    <xsl:value-of select="/root/zeile[$position]" />
  </xsl:template>

Die Tabelle wird dann so erzeugt:

<table border="1">
    <xsl:for-each select="root/zeile[position() &lt;= $haelfte]">
      <tr>
        <td>
          <xsl:value-of select="." /><!-- Element aus Teil 1 -->
        </td>
        <td>
          <xsl:call-template name="Teil2"><!-- Element aus Teil 1 -->
            <xsl:with-param name="position" select="position() + $haelfte" />
          </xsl:call-template>
        </td>
      </tr>
    </xsl:for-each>
  </table>

echo "$verabschiedung $name";