Tomm: Dynamische Tabellen an Seitengröße anpassen

Beitrag lesen

Hallo,

ich steh gerade vor einem knackigen Problem, bei dem ihr mit hoffentlich helfen könnt. Den bisherigen Erfahrungen, die ich bisher machen durfte, nach bin ich dabei aber sehr zuversichtlich.

Nun, ich habe eine XML in folgendem Format:

<Table Number="1">
<Name>Tabellenüberschrift</Name>
<Column Number="1">
 <Row Number="1">
  <Value>x</Value>
 </Row>
 <Row Number="2">
  <Value>x</Value>
 </Row>
 <Row Number="3">
  <Value>x</Value>
 </Row>
</Column>
<Column Number="2">
 <Row Number="1">
  <Value>00.0</Value>
 </Row>
 <Row Number="2">
  <Value>00.0</Value>
 </Row>
 <Row Number="3">
  <Value>00.0</Value>
 </Row>
</Column>
<Column Number="3">
 <Row Number="1">
  <Value>00</Value>
 </Row>
 <Row Number="2">
  <Value>00</Value>
 </Row>
 <Row Number="3">
  <Value>00</Value>
 </Row>
</Column>
<Column Number="4">
 <Name>Spalte4</Name>
 <Row Number="1">
  <Value>00000</Value>
 </Row>
 <Row Number="2">
  <Value />
 </Row>
 <Row Number="3">
  <Value />
 </Row>
</Column>
</Table>

Dazu habe ich in der XSL folgenden Code geschrieben, um die Daten in einer Tabelle auszugeben:

<xsl:for-each select="Column[1]/Row">
 <xsl:variable name="row" select="position()"/>
 <tr>
 <xsl:for-each select="../../Column">
  <xsl:variable name="col" select="position()"/>
  <td>
   <xsl:value-of select="../Column[$col]/Row[$row]" />
  </td>
 </xsl:for-each>
 </tr>
</xsl:for-each>

Die Anzahl der Spalten und Zeilen können jetzt von XML zu XML unterschiedlich sein. So kann es vorkommen, dass eine Tabelle bis zu 40 Spalten bekommt. Da die erzeugten Dokumente alle ausgedruckt werden, passiert es, dass zu lange Tabellen einfach nach rechts abgeschnitten werden. Dies kann man sich so vorstellen:

+----------------------------------+
|                                  |
|  +---------+---------+-------+---+
|  |    x    |   0.00  |   00  |  0|
|  +---------+---------+-------+---+
|  |    x    |   0.00  |   00  |   |
|  +---------+---------+-------+---+
|  |    x    |   0.00  |   00  |   |
|  +---------+---------+-------+---+
|                                  |
|                                  |
|                                  |
+----------------------------------+

So sieht es ebenfalls auf dem ausgedruckten Objekt aus. Meine Idee wäre gewesen, die Tabelle ab einer bestimmten Größe zu unterbrechen und sie direkt darunter weiterzuführen. In etwa so:

+----------------------------------+
|                                  |
|  +---------+---------+-------+   |
|  |    x    |   0.00  |   00  |   |
|  +---------+---------+-------+   |
|  |    x    |   0.00  |   00  |   |
|  +---------+---------+-------+   |
|  |    x    |   0.00  |   00  |   |
|  +---------+---------+-------+   |
|                                  |
|  +---------+                     |
|  |  00000  |                     |
|  +---------+                     |
|  |         |                     |
|  +---------+                     |
|  |         |                     |
|  +---------+                     |
|                                  |
+----------------------------------+

Kann mir jemand weiterhelfen? Auch wenn es nicht die Idee mit dem Umbrechen ist. Die Spalten schmäler machen oder eine kleinere Schriftgröße funktioniert leider aufgrund der gegebenen Daten nicht.

Oder gibt es neben dem Ändern meines oben genannten XSL-Scripts sogar noch eine andere Möglichkeit?

Vielen Dank im vorraus

Tom