1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

XSLT Prozessor Saxon (zum üben)

Dieses Thema im Forum "XML Technologien" wurde erstellt von Thomas Darimont, 8. Juli 2004.

  1. Thomas Darimont

    Thomas Darimont Premium-User

    Hallo!

    Falls ihr euch mal mit XML und XSLT befassen wolltet, jedoch nie mehr als den Internet Explorer dazu bemüht hat die XML gegen das XSLT Template zu rendern findet hier abhilfe:

    http://saxon.sourceforge.net
    Saxon ist ein Open Source XSLT Prozessor der es ermöglicht auf der Kommandozeile oder innerhalb eines Java Programms XLM Dokumente nach einem XSLT Template gerendert zu generieren.

    Saxon setzt eine installierte Java 1.4 Laufzeitumgebung voraus.

    Saxon verwenden ist ganz einfach.

    Zuerst laden wir uns mal das Projekt von SourceForge herunter:
    http://sourceforge.net/projects/saxon

    --> Download (Saxon 8.0):
    http://prdownloads.sourceforge.net/saxon/saxonb8-0.zip?download

    Danach entpacken wir das Zip Archiv in irgend ein Verzeichniss
    Z.bsp.: c:\Saxon

    In diesem verzeichnis finden wir dann die Datei saxon8.jar welche wir für unsere Anwendungen brauchen.

    Wir erstellen nun mal ein Minimales Beispiel XML und eine XSLT Datei um das Ganze mal auszuprobieren. Dabei lassen wir uns aus der XML Datei über die Anweisungen in der XSLT Datei eine HTML Datei erzeugen.

    Wir legen ein Verzeichniss namens XMLTest unter c:\ an
    -> c:\XMLTest

    Nun erstellen wir die Datei Test.xml

    Test.xml
    Code (Text):
    1. <?xml version="1.0"?>
    2. <?xml-stylesheet type="text/xsl" href="Prozessor.xsl"?>
    3. <firma name="XYZ Company">
    4.     <angestellte>
    5.         <angestellter name="Thomas" alter="20"/>
    6.         <angestellter name="Richard" alter="22"/>
    7.     </angestellte>
    8. </firma>
    Darauf folgend kümmern wir uns um die Prozessor.xsl
    Code (Text):
    1. <?xml version="1.0"?>
    2. <!--Prozessor.xsl-->
    3. <xsl:stylesheet version="1.0"
    4.  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    5.    <xsl:template match="/">
    6.       <html>
    7.          <head>
    8.             <title>
    9.                <xsl:value-of select="firma/@name"/>
    10.             </title>
    11.         </head>
    12.         <body>
    13.                <xsl:value-of select="firma/@name"/>
    14.            <table border="2">
    15.               <xsl:for-each select="/firma/angestellte/angestellter">
    16.                   <tr>
    17.                     <td><xsl:value-of select="@name"/></td>
    18.                     <td><xsl:value-of select="@alter"/></td>
    19.                   </tr>
    20.               </xsl:for-each>
    21.            </table>
    22.         </body>
    23.       </html>
    24.    </xsl:template>
    25. </xsl:stylesheet>
    Nun öffnen wir eine Konsole und wechseln in das Verzeichnis c:\xmlTest

    Dort setzen wir nun das Kommando:
    Code (Text):
    1. C:\xmlTest>java -cp c:\saxon\saxon8.jar net.sf.saxon.Transform -o Test.html Test
    2. .xml Prozessor.xsl
    Ab und finden nach Beendigung dieses Kommandos die Datei C:\xmlTest\Test.html

    Mit dem folgendem Inhalt:

    Code (Text):
    1. <html>
    2.    <head>
    3.       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    4.    
    5.       <title>XYZ Company</title>
    6.    </head>
    7.    <body>XYZ Company
    8.       <table border="2">
    9.          <tr>
    10.             <td>Thomas</td>
    11.             <td>20</td>
    12.          </tr>
    13.          <tr>
    14.             <td>Richard</td>
    15.             <td>22</td>
    16.          </tr>
    17.       </table>
    18.    </body>
    19. </html>
    Hoffe ihr könnt das Anwendungsbeispiel leicht nachvollziehen.

    GrußTom
     
    MarshallEs gefällt das.
  2. wilma

    wilma Gast

    Re: XSLT Prozessor Saxon -> über Ordner?

    Hallo Tom,

    vielen Dank für die Anleitung, Sie ist super simpel!

    Weisst Du auch noch eine einfache Lösung für das gleiche Spiel über ein ganzes Directroy?

    Viele Grüße,
    wilma
     
  3. MMP

    MMP Gast

  4. puntila

    puntila Grünschnabel

    Hallo Thomas,

    super Anleitung. Habe das Ganze unter einer Windows-Mühle gemacht. Funktionierte anfänglich nicht, weil ich Java nicht installiert hatte und Java und Saxon nicht in der Umgebungsvariablen PATH gesetzt hatte. Also zunächst folgende Schritte:

    1/ Java installieren: jre-6u21-windows-i586-iftw-rv.exe
    2/ PATH erweitern um "C:\Programme\Java\jre6\bin"

    Dann Deine beiden obigen Dateien test.xml und test.xsl erstellen und dann:

    C:\Programme\Saxon\test>java -cp c:\Programme\Saxon\saxon9he.jar net.sf.saxon.Transform -o test.html test.xml test.xsl

    Antwort:

    Warning: at xsl:stylesheet on line 4 column 51 of test.xsl:
    Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor

    Liefert die gewünschte HTML-Datei test.html.


    Danke
     
  5. Klösp

    Klösp Grünschnabel

    Hallo

    Ich versuche mich auch gerade in XSLT einzuarbeiten.

    Ich habe noch folgendes Problem:

    Das ist mein Befehl:

    C:\Users\xy\Desktop\XSLTTEST> java -cp C:\Users\xy\Desktop\XSLTTEST\Saxon\saxon9he.jar net.sf.saxon.Transform -o test.html Test.xml Prozessor.xsl

    Ich bekomme aber immer nur:

    Command line option -o requires a value

    Woran liegt das?

    Danke im Vorraus
     
  6. Klösp

    Klösp Grünschnabel

    mit Doppelpunkt hat es funktioniert.

    C:\Users\xy\Desktop\XSLTTEST> java -cp C:\Users\xy\Desktop\XSLTTEST\Saxon\saxon9he.jar net.sf.saxon.Transform -o:test.html Test.xml Prozessor.xsl
     
  7. franky2008

    franky2008 Grünschnabel

    Hallo :)

    ich habe auch alles genau so gemacht wie beschrieben.
    Leider kommt bei mir immer die Fehlermeldung
    "Der Befehl C:\Users\xy\Desktop\Aufgab ist entweder falsch geschrieben, oder konnte nicht gefunden werden"

    ich verstehe nicht was ich falsch gemacht habe
     
  8. User2

    User2 Grünschnabel

    Hallo Thomas & Mitstreiter,

    ich häng mich mal mit einer Frage an diesen Thread mit dran, obwohl er scho etwas älter ist:

    In der Einleitung steht:

    "Saxon ist ein Open Source XSLT Prozessor der es ermöglicht auf der Kommandozeile oder innerhalb eines Java Programms XLM Dokumente nach einem XSLT Template gerendert zu generieren." (Hervorhebung von mir)

    Die erste Möglichkeit über Kommandozeile habe ich probiert und es funktioniert anstandslos, vielen Dank für den wertvollen Hinweis!

    Jetzt würde mich aber noch die zweite Möglichkeit nach dem 'oder' interessieren.

    Ich habe dazu die saxon9he.jar als Bibliothek einem Java-Projekt hinzugefügt sowie die Test.xml und Prozessor.xsl Datei in den Projektordner kopiert. Jetzt wollte ich mit Hilfe der saxon api und anderer Quellen ein kleines Java Programm schreiben, welches genau das gleiche leistet, wie der genannte Kommandozeilen-Befehl (java -cp c:\saxon\saxon8.jar net.sf.saxon.Transform
    -o Test.html Test.xml Prozessor.xsl). Leider ist es mir, zumindest mit saxon, nicht gelungen, etwas lauffähiges hinzubekommen. Weiß jemand Abhilfe?
     
Die Seite wird geladen...