Hallo,
Ja. Eine Tabelle in XLF-FO verhält sich hierbei nicht anderes als eine HTML-Tabelle
Ich glaube, ich habe mich etwas unklar ausgedrückt. Die Spalten selbst sind natürlich immer gleichlang. Ich möchte vielmehr den Text darin so ausrichten, dass die Spalten immer in kompletter Höhe ausgefüllt werden, also vertikaler Blocksatz.
Wenn du nur einen Text auf die spalten verteilen musst, geht das.
Etwas kompliziert, aber möglich: du teilst die Gesamtlänge des Textes durch die Anzahl der Spalten und füllst nur jeweils den entsprechenden Textteil in die Spalte.
Im Archiv gibt es von mir ein Template für eine Lösung mit zwei Spalten (zwar für HTML, aber das ist in Prinzip dasselbe), wo auch das Wortende brücksichtigt wird (damit ein Wort nicht mitten drinn zerschnitten wird)
Willst du Texte aus verschiedenen Elementen so auf die Spalten verteilen, müsstest du zuerst diese Texte zu einem String machen und dann wie weiter oben verfahren.
Das kommt darauf an.
Ich könnte jetzt einfach "Ja" sagen, aber das würde dir nicht helfen. Weitere Hilfe ist nur dann möglich, wenn du auch deinen (Teil) Code dazugibst.<xsl:template match="name">
fo:block
<xsl:apply-templates select="nachname"/>
<xsl:apply-templates select="vorname"/>
<xsl:apply-templates select="strasse"/>
<xsl:apply-templates select="nummer"/>
</fo:block><xsl:template match="nachname">
xsl:choose
<xsl:when test="./text() = preceding::nachname/text()">
xsl:text-</xsl:text>
</xsl:when>
xsl:otherwise
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
xsl:text </xsl:text>
</xsl:template>Es handelt sich um Adressen, die jeweils in einem Absatz hintereinanderweg in einem mehrspaltigen Dokument ausgegeben werden. Das zweite Template soll für den Nachnamen nur einen '-' ausgeben, wenn diese identisch zum vorhergehenden Nachnamen ist.
Es tut mir leid, ich verstehe das Problem noch immer nicht.
Was funktioniert an deinem Template nicht?
Mal davon abgesehene, dass ich es so schreiben würde:
<xsl:template match="nachname">
<xsl:when test=". = preceding::nachname">
....
Was aber trotzdem und immer noch davon ausgeht, dass innerhalb von einem <name>-Element mehrere <nachname>-Elemente vorkommen können.
Grüße
Thomas