Dokumentenformate / Formatting Objects / Auslagerung in separate Templates

Auslagerung in separate Templates

Auslagerung in separate Templates

Um XML mit Hilfe von XSL nach PDF (png, rtf, tiff, png, txt, ps, pcl) transformieren zu können, ist zunächst eine Konvertierung in das Zwischenformat "FO" erforderlich.

Völlig dasselbe Ergebnis erhalten wir, wenn wir statt der Einzelaufrufe von z.B.


<fo:table-cell>
 <fo:block>
  <xsl:value-of select="../vorname" />
 </fo:block>
</fo:table-cell>

diese durchweg identischen Aufrufe auslagern in ein separates Template etwa der folgenden Logik


 <xsl:template name="tablecell">
  <xsl:param name="p" as="xs:string"/>
  <fo:table-cell>
   <fo:block>
    <xsl:value-of select="$p" />
   </fo:block>
  </fo:table-cell>
 </xsl:template>

und dieses Template dann via xsl:call-template und xsl:with-param aufrufen:


 <xsl:call-template name="tablecell">
  <xsl:with-param name="p" select="../vorname" />
 </xsl:call-template>
 <xsl:call-template name="tablecell">
  <xsl:with-param name="p" select="../name" />
 </xsl:call-template>
 <xsl:call-template name="tablecell">
  <xsl:with-param name="p" select="anzahl" />
 </xsl:call-template>

Eine weitere Alternative liegt in der Implementierung in ein xsl:template, das für Elemente "vorname, name, anzahl" wie geschaffen ist:


  <xsl:template match="vorname | name | anzahl">
    <fo:table-cell>
      <fo:block>
        <xsl:value-of select="." />
      </fo:block>
    </fo:table-cell>
  </xsl:template>

Dieses Template wiederum wird aufrufbar (immer ausgehend von "Kauf" als aktuellem Node) durch


<xsl:apply-templates select="../vorname"/>
<xsl:apply-templates select="../name"/>
<xsl:apply-templates select="anzahl"/>

Meine Vorbehalte gegen ein allzu sorgloses Auslagern in zahlreiche Templates habe ich an anderer Stelle deutlich gemacht. Es besteht die Gefahr der Unübersichtlichkeit und erschwerter Wartbarkeit der Applikation.

wg / 2. Januar 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf:

Vorname
Nachname
Mailadresse







Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

Mobil: 0151. 750 360 61 * eMail: info2018@wilfried-grupe.de

www.wilfried-grupe.de/FO1_5.html