Thomas J.S.: xsl mit html zu xsl:fo - Software bzw. Referenzseiten?

Beitrag lesen

Hallo,

Allerdings wäre es schön, wenn ich dieses zweite Stylesheet mit einem Konvertierprogramm erst einmal aus den bestehenden stylesheets erstellen könnte (sozusagen als Vorlage).

Würde ich nicht machen, weil die anschießende Bearbeitung und Korrektur und/oder Fehlersuche mehr Zeit in Anspruch nimmt, als wenn du ein neues XSLT schreibst.

Aber stimmt es wirklich, dass ich keine xsl elemente und xpath in einem xsl-fo stylesheet verwenden kann (siehe Antwort von Thomas M. - oder habe ich mich nur unverständlich in meiner Frage gegeben)? Dann bräuchte ich erst gar nicht anfangen ;-(

Du hast die Antwort missverstanden. Zu Thomas bereits vorhandenen Antwort auf diese Frage, hier ein Beispiel:

XML-Datei:
---
<?xml version="1.0" encoding="iso-8859-1"?>
<text>Meine erste XSL-FO Seite</text>
---

XSL-Datei, dass als Ausgabe ein XSL-FO-Dokument zu/aus diesem XML erzugt:
---
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <xsl:output method="xml" indent="yes" encoding="iso-8859-1" />
  <xsl:template match="/">
   fo:root
     fo:layout-master-set
       <fo:simple-page-master master-name="meineSeite"
           page-width="21cm"
           page-height="29.7cm"
           margin="2cm">
       fo:region-body/
       <fo:region-after extent="1.5cm"/>
       </fo:simple-page-master>
     </fo:layout-master-set>

<fo:page-sequence master-reference="meineSeite">
      <fo:static-content flow-name="xsl-region-after">
        fo:block
          fo:page-number/
        </fo:block>
      </fo:static-content>
      <fo:flow flow-name="xsl-region-body">
          xsl:apply-templates/
       </fo:flow>
     </fo:page-sequence>
   </fo:root>
  </xsl:template>

<xsl:template match="text">
    fo:block
      <xsl:value-of select="."/>
    </fo:block>
  </xsl:template>
</xsl:stylesheet>
---

Du kannst natürlich direkt ohne Umweg eine XSL-FO Datei schreiben, aber dann muss du darin auch die Inhalte (die sonst im XML stehen) direkt hineinschreiben.
Hier die XSL-FO Datei, die entweder aus dem XML mit der XSLT erzeugt oder direkt so wie sie ist (von Hand in einem Editor) geschrieben werden kann.
(FOP übernimmt die Arbeit, eine FO-Datei zu erzeugen (er macht das intern) und so kannst du XML-->XSLT-->PDF generieren)
---
<?xml version="1.0"?>
 <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
     fo:layout-master-set
       <fo:simple-page-master master-name="meineSeite"
           page-width="21cm"
           page-height="29.7cm"
           margin="2cm">
       fo:region-body/
       <fo:region-after extent="1.5cm"/>
       </fo:simple-page-master>
     </fo:layout-master-set>

<fo:page-sequence master-reference="meineSeite">
      <fo:static-content flow-name="xsl-region-after">
        fo:block
          fo:page-number/
        </fo:block>
      </fo:static-content>
      <fo:flow flow-name="xsl-region-body">
          fo:block
           Meine erste XSL-FO Seite
          </fo:block>
       </fo:flow>
     </fo:page-sequence>
 </fo:root>
---

Grüße
Thomas