Errraddicator: XSLT in XSL-FO umwandeln?

Tach auch,

ich habe ein Problem:
ich habe eine XML und eine XSLT Datei.
Wenn ich die XML-Datei dann mit Hilfe der XSLT-Datei im Browser anzeigen lasse, funktioniert das auch 1A.
Jetzt will ich mit FOP das ganze inne PDF umwandeln und der will jetzt ne XSL-FO Datei haben...

Gibt es eine Möglichkeit über meine XSLT-/XML-Datei eine XSL-FO-Datei zu erstellen die so aussieht wie es im Browser aussieht, damit ich dadurch meine PDF erzeugen kann?

Oder muss ich mein Programm so umschreiben, dass es keine XML-Dateien mehr schreibt, sondern XSL-FO-Dateien?
Diesen Schritt will ich eigentlich nicht machen, da das ne Menge Aufwand wäre.

Danke für jede Hilfe

Patrick Sondermann

  1. Hallo,

    Gibt es eine Möglichkeit über meine XSLT-/XML-Datei eine XSL-FO-Datei zu erstellen die so aussieht wie es im Browser aussieht, damit ich dadurch meine PDF erzeugen kann?

    Vermutlich wird das Ergebnis nicht so aussehen wie es ein Browser darstellen wuerde, eher wie es ein Print-Stylesheet umsetzen wuerde. Die FO-(Attribut)-Syntax ist ja an CSS-Eigenschaften angelehnt.

    Oder muss ich mein Programm so umschreiben, dass es keine XML-Dateien mehr schreibt, sondern XSL-FO-Dateien?

    Wie das XSL-FO-Dokument zustande kommt, ist nebensachlich. Ein Formatter wie FOP braucht es jedoch zum Erzeugen einer Ausgabe.

    In diesem Beispielarchiv (177 KB) zu einem Vortrag sind einige XSLT-Vorlagen zur Ausgabe von FO-Dokumenten enthalten (unter /ktd-news/xslfo/). Die PDF- und RTF-Dateien unter /ktd-news/xslfo/output/ wurden mit FOP erzeugt.

    MfG, Thomas

    1. hallo,
      danke erst mal für die schnelle Antwort.

      Das heisst jetzt soviel wie, dass ich in meiner XSLT-Datei nicht auf HTML setzen kann (wie ich es bisher gemacht habe), sondern an Stelle von z.B. "<table>" etc. dann "fo:table" oder Ähnliches verwenden muss?

      Damit kann ich dann eine entsprechende XSL-FO Datei gefüllt mit den Daten aus der XML-Datei erzeugen?
      Und da wären wir dann auch gleich bei der nächsten Frage :) :
      Wie wird dann aus der FO-Kompatiblen XSLT/XML-Kombination eine XSL-FO-Datei?

      1. Hallo,

        Das heisst jetzt soviel wie, dass ich in meiner XSLT-Datei nicht auf HTML setzen kann (wie ich es bisher gemacht habe), sondern an Stelle von z.B. "<table>" etc. dann "fo:table" oder Ähnliches verwenden muss?

        Ja.

        Damit kann ich dann eine entsprechende XSL-FO Datei gefüllt mit den Daten aus der XML-Datei erzeugen?

        Ja.

        Und da wären wir dann auch gleich bei der nächsten Frage :) :
        Wie wird dann aus der FO-Kompatiblen XSLT/XML-Kombination eine XSL-FO-Datei?

        Mit einem XSLT-Prozessor wird aus XML das FO-Dokument erzeugt (also wiederum XML). Dieses FO-Dokument wird dann dem Formatter uebergeben. Sehr praktisch ist das Java-basierte Tool "XMLMind FO Converter + XSL Utility". Damit kann man ueber die grafische Oberflaeche die XML- und XSL-Dokumente auswaehlen und die jeweilige Ausgabe (PDF, RTF, WordML, HTML, XML, Text) wird erzeugt (d. h. XSL-Transformation und FOP-Job laufen ggf. nacheinander ab).

        MfG, Thomas

        1. Alles klar, probiere ich mal aus.

          Danke für die Tipps! ;)

        2. so nach ein bisschen rumhantieren mit dem FOConverter bekomme ich jetzt immer die Fehlermeldung "Syntax Error".
          Er sagt mir aber nicht wo der Syntaxfehler sein soll...

          Gibts da irgendwie ne Möglichkeit rauszufinden was er meint?

          1. Hallo,

            so nach ein bisschen rumhantieren mit dem FOConverter bekomme ich jetzt immer die Fehlermeldung "Syntax Error".
            Er sagt mir aber nicht wo der Syntaxfehler sein soll...

            Funktionieren meine Beispiele? Bei mir durchaus.

            Gibts da irgendwie ne Möglichkeit rauszufinden was er meint?

            Manuell mit einem beliebigen XSLT-Prozessor die FO-Datei erstellen --> FO-Code pruefen und dann dem FOP die FO-Datei auf der Konsole uebergeben --> Fehlermeldungen analysieren.

            MfG, Thomas

            1. Hallo

              jetzt bin ich schon mal soweit dass die FO-Datei erstellt wird.
              Werde noch mal ein bisschen rumspielen dann bekomme ich das andere auch hin.

              Danke nochmals für jede Hilfe ;)