xsl doppelseiten

anpeter

Grünschnabel
xml/xsl/xsl:fo kolumnentitel

Hallo,

ich ich bin gerade an der XML-Umwandlung per XSL-T und XSL:FO und komme gerade nicht so recht weiter und hoffe, hier Hilfe zu bekommen.

Das Problem ist folgendes: ich habe eine XML-Datei die in ein PDF transformiert werden soll. Dabei soll es, wie in vielen Büchern, einen Kolumnentitel geben (wenn möglich lebend). Dieser Kolumnentitel soll aus der XML-Datei "gezogen" werden (später auch mal als Attribut) und in der "region-before" der XSL:FO-Datei übergeben werden. Das ich auf allen Seiten den gleichen Kolumnentitel habe, klappt soweit, nur einen "dynamischen" bekomme ich nicht hin. Der Kolumnentitel sollte sich nach der XML-Struktur richten. Ich bin leider kein Programmierer und kenne mich daher auch mit Variablen usw. nicht so dolle aus. Die Ausgangsdateien habe ich mal beigelegt. Schonmal vielen Dnak für die Hilfe. Damit wäre mir schon sehr geholfen.

Die XML-Datei (stark vereinfacht):

<?xml version="1.0" encoding="utf-8"?>
<buch>
<titel>Kolumnentitel</titel>
<kapitel>
<kapitelnummer>1</kapitelnummer>
<kapitelname>erstes Kapitel...</kapitelname>
</kapitel>
<!-- weiterer Inhalt -->
<kapitel>
<kapitelnummer>2</kapitelnummer>
<kapitelname>zweites Kapitel...</kapitelname>
</kapitel>
<!-- weiterer Inhalt -->
</buch>


Und hier die XSL-Datei (ebenfalls stark vereinfacht):

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">

<!-- Seitenmaster -->
<xsl:template match="/">
<fo:root>
<fo:simple-page-master master-name="linke_seite" margin-top="20mm" margin-bottom="20mm" margin-left="25mm" margin-right="15mm" page-height="297mm" page-width="210mm">
<fo:region-body margin-top="20mm" margin-bottom="20mm" margin-left="20mm" margin-right="20mm"/>
<fo:region-before extent="1in"/>
<fo:region-after extent="10mm"/>
<fo:region-start extent="20mm"/>
<fo:region-end extent="20mm"/>
</fo:simple-page-master>

<fo:simple-page-master master-name="rechte_seite" margin-top="20mm" margin-bottom="20mm" margin-left="15mm" margin-right="25mm" page-height="297mm" page-width="210mm">
<fo:region-body margin-top="20mm" margin-bottom="20mm" margin-left="20mm" margin-right="20mm"/>
<fo:region-before extent="1in"/>
<fo:region-after extent="10mm"/>
<fo:region-start extent="20mm"/>
<fo:region-end extent="20mm"/>
</fo:simple-page-master>

<fo:page-sequence-master master-name="doppelseite">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference master-reference="linke_seite" odd-or-even="even"/>
<fo:conditional-page-master-reference master-reference="rechte_seite" odd-or-even="odd"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>

<!-- Doppelseite -->
<fo:page-sequence master-reference="doppelseite" initial-page-number="1">
<fo:static-content flow-name="xsl-region-before">
<fo:block font-family="Times" font-size="10pt" border-after-style="solid" border-width="0.3mm">
<xsl:apply-templates select="//kapitel"/>
</fo:block>
</fo:static-content>

<fo:static-content flow-name="xsl-region-after">
<fo:block text-align="end">
<fo:inline font-family="Times" font-size="9pt" text-align="end" border-after-style="solid" border-width="0.3mm">
<fo:page-number/>
</fo:inline>
</fo:block>
</fo:static-content>

<fo:flow flow-name="xsl-region-body">
<fo:block>
<xsl:text>hier weiterer Inhalt</xsl:text></fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>

<!-- Templates fuer Inhalt -->
<xsl:template match="kapitel">
<xsl:value-of select="kapitelnummer"/>
<xsl:text> | </xsl:text>
<xsl:value-of select="kapitelname"/>
</xsl:template>

</xsl:stylesheet>

Vielen Dank schonmal für die Unterstützung.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück