Hallo,
für die Festlegung Spaltenbreite (column-width="") einer Tabelle brauche ich die Anzahl der td`s aus dem XML. Ich habe hier einen kläglichen Versuch mit einer Variablen und for-each:
<xsl:template match="table/tr/td">
<fo:block >
<fo:table width="100%" padding-after="1cm" >
Damit würdest du für jede Tabellenzeille (aus dem XML) eine Tabelle im PDf erzeugen.
<xsl:template match="table">
<fo:block >
<fo:table width="100%" padding-after="1cm">
<xsl:for-each select="td">
<xsl:variable name="Anzahl_td" select="count(td)"/>
Anzahl_td wird so glewich aus zwei Gründen immer null sein:
- mit <xsl:template match="table/tr/td"> bist du bereits im <td> darin mit <xsl:for-each select="td"> bringt null Treffer, und dann
- versuchst nochmal in tds 8die eas gar nicht gibt) weitere tds zu zählen: <xsl:variable name="Anzahl_td" select="count(td)"/>, was natürlich auch immer null sein wird.
Also:
<xsl:template match="table">
jetzt kommt es darauf an, ob du in jeder Zeile (tr) die gleiche Anzahl von Zellen (td) hast. Sagen wir du nimmst die erte Zeile:
<xsl:variable name="Anzahl_td" select="count(tr[1]/td)"/>
<fo:block >
<fo:table width="100%" padding-after="1cm">
Der Rest kann bleiben wie vorher:
xsl:choose
<xsl:when test="{$Anzahl_td}= 5">
<fo:table-column column-width="4cm" />
</xsl:when>
...
</xsl:choose>
Grüße
Thomas