Thomas J.S.: Tabelle in xsl

Beitrag lesen

Hallo,

» Meine xsl-Versuche diesbezüglich habe ich Dir auch noch dazu kopiert (bisher leider fehlerhaft). Die Ausgabe soll lediglich die Elemente entsprechend ihren Bezeichnungen im xml-file (müsste eigentlich selbsterklärend sein) in einer Tabelle darstellen. Bei fester Anzahl Zeilen und Spalten würde ich dies auch ohne weiteres hinbekommen. Aber so gestaltet es sich etwas schwierig:

So schwierig ist es nicht, man braucht nicht unbedingt an was kompliziertes denken:

Grüße
Thomas
-------------------------------------------------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="ausrichtung" select="//column_format" />

<xsl:template match="/page">
      <html>
         <head>
            <title/>
         </head>
         <body>
            <xsl:if test="show_table = 'true'">
            <xsl:apply-templates select="table"/>
            </xsl:if>
         </body>
      </html>
   </xsl:template>

<xsl:template match="table">
   <table width="100%" border="1">
      <caption><xsl:value-of select="../table_headline" /></caption>
         <xsl:apply-templates select="tr[position() != 1]"/>
   </table>
   </xsl:template>

<xsl:template match="tr">
   <tr>
      <xsl:apply-templates select="td"/>
   </tr>
   </xsl:template>

<xsl:template match="td">
      <xsl:variable name="pos1" select="position()" />
      xsl:choose
         <xsl:when test="./table_header">
            <th>
               <xsl:attribute name="align">
                  <xsl:value-of select="$ausrichtung[position() = $pos1]" />
               </xsl:attribute>
               <xsl:value-of select="child::node()/text()" />
           </th>
         </xsl:when>
         xsl:otherwise
            <td>
               <xsl:attribute name="align">
                  <xsl:value-of select="$ausrichtung[position() = $pos1]" />
               </xsl:attribute>
               <xsl:value-of select="child::node()/text()" />
            </td>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

</xsl:stylesheet>