Dies ist eine Follow-up-Frage zu this question Ich gepostet vor einer Weile.Wie füllt man die Tabelle vertikal?
Ich habe den folgenden XSL-Stylesheet bekommt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
<xsl:template match="barcode-list">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="21cm" margin-top="2cm" margin-bottom="2cm" margin-left="2cm" margin-right="2cm">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="simpleA4">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="14pt">
<fo:table table-layout="fixed" width="100%" border-collapse="separate" border-separation="3pt">
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
<fo:table-body>
<xsl:apply-templates select="item"/>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="item">
<fo:table-cell text-align="center">
<xsl:if test="position() mod 2 = 1">
<xsl:attribute name="starts-row">true</xsl:attribute>
</xsl:if>
<fo:block>
<fo:external-graphic height="scale-to-fit" width="100%" content-height="scale-to-fit" content-width="scale-to-fit">
<xsl:attribute name="src">url('<xsl:value-of select="image"/>')</xsl:attribute>
</fo:external-graphic>
</fo:block>
<fo:block>
<fo:external-graphic height="scale-to-fit" width="100%" content-height="scale-to-fit" content-width="scale-to-fit">
<xsl:attribute name="src">url('<xsl:value-of select="barcode"/>')</xsl:attribute>
</fo:external-graphic>
</fo:block>
<fo:block wrap-option="wrap">
<xsl:value-of select="name"/>
</fo:block>
</fo:table-cell>
</xsl:template>
</xsl:stylesheet>
Dies funktioniert gut, da es eine Tabelle mit zwei Spalten mit meinen Daten füllt.
Dies füllt die Tabelle "horizontal", wie die Tabelle auf der linken Seite.
ich meine Anforderungen neu bewertet und erkennen, dass ich es auf dem rechten Seite „vertikal“, wie die Tabelle gefüllt werden möchte:
--------------- -----------------
| 1 | 2 | | 1 | (n/2)+1 |
| 3 | 4 | | 2 | (n/2)+2 |
| ... | ... | | ... | ... |
| n-1 | n | | n/2 | n |
--------------- -----------------
Idealerweise würde ich will in der nächsten Spalte bewegen am Ende der Seite und neu beginnen in der ersten Spalte auf der nächsten Seite, aber ich nehme an, dass das nicht möglich ist.
Dies ist ein Beispiel für meine xml:
<barcode-list>
<item>
<name>the-barcode</name>
<barcode>file:///d:/pdf/barcode.png</barcode>
<image>file:///d:/test.png</image>
<format>CODE_128</format>
</item>
...
</barcode-list>
Ich fand this message board-Eintrag, eine Lösung vorzuschlagen scheint, aber ich kann meinen Kopf nicht umschlingen, was es tut.
Kann mir jemand irgendwelche Hinweise geben, wie ich anfangen soll?
eine zweispaltige Dokument erstellen und eine Tabelle nicht –
@KevinBrown Würde es mir erlauben, automatisch zur nächsten Spalte am Ende der Seite zu gehen, oder würde es im Grunde die erste Spalte aller Seiten füllen, bevor es mit der zweiten Spalte der ersten Seite beginnt? – Baz
Ein zweispaltiges Dokument würde die linke Spalte füllen, dann die rechte Spalte, der Anfang auf der nächsten Seite und so weiter. –