Charli: XSL => Tabelle => Cols

Beitrag lesen

Hallo Gemeinde!

Ich habe mehrere Tabellen zwischen 1 und 7 Spalten innerhalb eines XML Dokuments.

Aufgabe ist: Die breite der Zellen <TD> in <THEAD> und <TBODY> dynamisch aus <COL width="xx%"/> zu erzeugen und die Ausrichtung in <THEAD> und <TBODY> dynamisch zu Erzeugen <TD align="xx"/>

Meine XML Datei

<TABLE>  <COL width="40%"/>  <COL width="20%"/>  <COL width="20%"/>  <COL width="20%"/>  <THEAD>    <TR>      <TD align="center"/>      <TD align="center">bis zu einem Jahr EUR</TD>      <TD align="center">zwischen einem und fünf Jahren<nZ/>EUR</TD>      <TD align="center">mehr als 5 Jahre EUR</TD>    </TR>  </THEAD>  <TBODY>    <TR>      <TD align="left"/>      <TD align="center"/>      <TD align="center"/>      <TD align="center">0,00</TD>    </TR>    <TR>      <TD align="left"/>      <TD align="center"/>      <TD align="center"/>      <TD align="center">0,00</TD>    </TR>  </TBODY> </TABLE>

<TABLE>  <COL width="66%"/>  <COL width="17%"/>  <COL width="17%"/>  <THEAD>    <TR>      <TD align="left"/>      <TD align="center">31.12.2006 <nZ/>EUR</TD>      <TD align="center">31.12.2005 <nZ/>EUR</TD>    </TR>  </THEAD>  <TBODY>    <TR Hervorhebung="Hauptgruppe">      <TD align="left"><b>Umlaufvermögen</b></TD>      <TD align="center"/>      <TD align="right"/>    </TR>    <TR>      <TD align="left">Zur Veräußerung bestimmte Anlagegegenstände</TD>      <TD align="center"/>      <TD align="right"/>    </TR>    <TR Hervorhebung="Summe">      <TD align="left"/>      <TD align="right">5.604.623,97</TD>      <TD align="right">7.824.666,55</TD>    </TR>    <TR>      <TD align="left">Kassenbestand und Guthaben bei Kreditinstituten</TD>      <TD align="right">2.540.493,04</TD>      <TD align="right">1.244.653,27</TD>    </TR>  </TBODY> </TABLE>

Meine XSL Datei

<xsl:template match="TABLE/THEAD">     <!-- in jeder Zeile /tr) die Anzahl von Zellen (td). Die Erste Zeile nehmen -->     <xsl:variable name="Anzahl_td" select="count(TR[1]/TD)"/>     <table style="width:750px; margin-bottom:0px;">        <xsl:for-each select="TR">        xsl:choose           <xsl:when test="($Anzahl_td) = 1">           <tr>              <td><xsl:value-of select="TD[1]"/></td>           </tr>           </xsl:when>           <xsl:when test="($Anzahl_td) = 2">           <tr>              <td><xsl:value-of select="TD[1]"/></td>              <td><xsl:value-of select="TD[2]"/></td>           </tr>           </xsl:when>           <xsl:when test="($Anzahl_td) = 3">           <tr>              <td><xsl:value-of select="TD[1]"/></td>              <td>                 <xsl:value-of select="TD[2]"/>                 <br />                 xsl:text&#160;</xsl:text>              </td>              <td>                 <xsl:value-of select="TD[3]"/>                 <br />                 xsl:text&#160;</xsl:text>              </td>          </tr>          </xsl:when>           <xsl:when test="($Anzahl_td) = 4">           <tr>              <td><xsl:value-of select="TD[1]"/></td>              <td><xsl:value-of select="TD[2]"/></td>              <td><xsl:value-of select="TD[3]"/></td>              <td><xsl:value-of select="TD[4]"/></td>           </tr>           </xsl:when>           <xsl:when test="($Anzahl_td) = 5">           <tr>              <td><xsl:value-of select="TD[1]"/></td>              <td><xsl:value-of select="TD[2]"/></td>              <td><xsl:value-of select="TD[3]"/></td>              <td><xsl:value-of select="TD[4]"/></td>              <td><xsl:value-of select="TD[5]"/></td>           </tr>           </xsl:when>           <xsl:when test="($Anzahl_td) = 6">           <tr>              <td><xsl:value-of select="TD[1]"/></td>              <td><xsl:value-of select="TD[2]"/></td>              <td><xsl:value-of select="TD[3]"/></td>              <td><xsl:value-of select="TD[4]"/></td>              <td><xsl:value-of select="TD[5]"/></td>              <td><xsl:value-of select="TD[6]"/></td>           </tr>           </xsl:when>           <xsl:when test="($Anzahl_td) = 7">           <tr>              <td><xsl:value-of select="TD[1]"/></td>              <td><xsl:value-of select="TD[2]"/></td>              <td><xsl:value-of select="TD[3]"/></td>              <td><xsl:value-of select="TD[4]"/></td>              <td><xsl:value-of select="TD[5]"/></td>              <td><xsl:value-of select="TD[6]"/></td>              <td><xsl:value-of select="TD[7]"/></td>           </tr>           </xsl:when>          xsl:otherwise             <xsl:value-of select="." />          </xsl:otherwise>

</xsl:choose>        </xsl:for-each>    </table>    </xsl:template>

<xsl:template match="TABLE/TBODY">    <!-- in jeder Zeile (tr) die Anzahl von Zellen (td). Die erte Zeile nehmen -->    <xsl:variable name="Anzahl_td" select="count(TR[1]/TD)"/>    <table style="width:750px;">       <xsl:for-each select="TR">       xsl:choose

<!-- Hervorhebung beginn -->          <xsl:when test="@Hervorhebung='Hauptgruppe'">          <tr>             <td><xsl:value-of select="TD[1]"/></td>             <td><xsl:value-of select="TD[2]"/></td>             <td><xsl:value-of select="TD[3]"/></td>          </tr>          </xsl:when>          <xsl:when test="@Hervorhebung='Summe'">          <tr>            <td><xsl:value-of select="TD[1]"/></td>             <td><xsl:value-of select="TD[2]"/></td>             <td><xsl:value-of select="TD[3]"/></td>          </tr>          </xsl:when>          <xsl:when test="@Hervorhebung='Zwischensumme'">          <tr>             <td><xsl:value-of select="TD[1]"/></td>             <td><xsl:value-of select="TD[2]"/></td>             <td><xsl:value-of select="TD[3]"/></td>          </tr>          </xsl:when>          <xsl:when test="@Hervorhebung='Hauptposition'">          <tr>             <td><xsl:value-of select="TD[1]"/></td>             <td><xsl:value-of select="TD[2]"/></td>             <td><xsl:value-of select="TD[3]"/></td>          </tr>          </xsl:when>          <!-- Hervorhebung ende -->

<!-- Anzahl der Zellen pro Zeile beginn -->          <xsl:when test="($Anzahl_td) = 1">          <tr>             <td><xsl:value-of select="TD[1]" /></td>          </tr>          </xsl:when>          <xsl:when test="($Anzahl_td) = 2">          <tr>             <td><xsl:value-of select="TD[1]" /></td>             <td><xsl:value-of select="TD[2]" /></td>          </tr>          </xsl:when>          <xsl:when test="($Anzahl_td) = 3">          <tr>             <td><xsl:value-of select="TD[1]" /></td>             <td><xsl:value-of select="TD[2]" /></td>             <td><xsl:value-of select="TD[3]" /></td>          </tr>          </xsl:when>          <xsl:when test="($Anzahl_td) = 4">          <tr>             <td><xsl:value-of select="TD[1]" /></td>             <td><xsl:value-of select="TD[2]" /></td>             <td><xsl:value-of select="TD[3]" /></td>             <td><xsl:value-of select="TD[4]" /></td>          </tr>          </xsl:when>          <xsl:when test="($Anzahl_td) = 5">          <tr>             <td><xsl:value-of select="TD[1]" /></td>             <td><xsl:value-of select="TD[2]" /></td>             <td><xsl:value-of select="TD[3]" /></td>             <td><xsl:value-of select="TD[4]" /></td>             <td><xsl:value-of select="TD[5]" /></td>          </tr>          </xsl:when>          <xsl:when test="($Anzahl_td) = 6">          <tr>             <td><xsl:value-of select="TD[1]" /></td>             <td><xsl:value-of select="TD[2]" /></td>             <td><xsl:value-of select="TD[3]" /></td>             <td><xsl:value-of select="TD[4]" /></td>             <td><xsl:value-of select="TD[5]" /></td>             <td><xsl:value-of select="TD[6]" /></td>          </tr>          </xsl:when>          <xsl:when test="($Anzahl_td) = 7">          <tr>             <td><xsl:value-of select="TD[1]" /></td>             <td><xsl:value-of select="TD[2]" /></td>             <td><xsl:value-of select="TD[3]" /></td>             <td><xsl:value-of select="TD[4]" /></td>             <td><xsl:value-of select="TD[5]" /></td>             <td><xsl:value-of select="TD[6]" /></td>             <td><xsl:value-of select="TD[7]" /></td>          </tr>          </xsl:when>          xsl:otherwise             <xsl:value-of select="." />          </xsl:otherwise>          <!-- Anzahl der Zellen pro Zeile ende -->

</xsl:choose>       </xsl:for-each>    </table>   </xsl:template>

Kennt hier jemand eine Lösung bitte?

Vielen Danke Charli