saxon und non-validating parser
Skeeve
- java
0 Thomas J.S.0 Skeeve0 Thomas J.S.0 Skeeve0 Thomas J.S.0 Skeeve0 Thomas J.S.0 Skeeve
0 Skeeve0 Thomas J.S.0 Skeeve
Moin!
Ich rufe über Kommandozeile saxon auf um eine XML Datei zu transformieren. Sie lädt weitere XML Dateien nach. Dummerweise haben diese einen DOCTYPE angegeben und die angegebene DTD kann nicht geladen werden (unknown protocol). Einfluß auf diese Dateien habe ich nicht, muß sie also akzeptieren wie sie sind.
Nun meine ich das ganze, was ich mir bisher aus dem Netz gesucht habe, soweit verstanden zu haben, daß ich einen nicht-validierenden Parser verwenden muß. aelfred soll so einer sein, allerdings bekomem ich nur Fehlermeldungen, wenn ich saxon aufrufe.
Ich habe mehrere Varianten versucht. Alle enden mit:
Transformation failed: net.sf.saxon.trans.DynamicError: Failed to load net.sf.saxon.aelfred.SAXDriver
Hier ein Beispielaufruf:
java -cp saxon-aelfred.jar -jar saxon8.jar -x net.sf.saxon.aelfred.SAXDriver mein.xml mein.xsl
Beide jars liegen im aktuellen Verzeichnis.
Was mache ich beim Aufruf verkehrt?
Ist mein Ansatz vielleicht per se schon falsch?
-- Skeeve
Hallo,
Nun meine ich das ganze, was ich mir bisher aus dem Netz gesucht habe, soweit verstanden zu haben, daß ich einen nicht-validierenden Parser verwenden muß. aelfred soll so einer sein, allerdings bekomem ich nur Fehlermeldungen, wenn ich saxon aufrufe.
Was mache ich beim Aufruf verkehrt?
Ist mein Ansatz vielleicht per se schon falsch?
An sich machst du nichts flasch, aber AElfred kann nicht gelade werden, weil es dafür keine Main-Classe im jar definiert ist.
Verwende Saxon 6.5.2 (so fern du nur XSLT 1 verwendest), darin ist AElfred inkludiert
http://saxon.sourceforge.net/saxon6.5.2/
Grüße
Thomas
Danke!
An sich machst du nichts flasch, aber AElfred kann nicht gelade werden, weil es dafür keine Main-Classe im jar definiert ist.
Ich werde Java wohl nie so ganz verstehen ;-)
Verwende Saxon 6.5.2 (so fern du nur XSLT 1 verwendest), darin ist AElfred inkludiert
Unglücklicherweise ist es XSLT 2.0 - und zwar bis zum Exszess ;-) Inklusive selbstdefinierter Funktionen.
-- Skeeve
Hallo,
An sich machst du nichts flasch, aber AElfred kann nicht gelade werden, weil es dafür keine Main-Classe im jar definiert ist.
Ich werde Java wohl nie so ganz verstehen ;-)
Na ja, wenn du AELfred in deine eigene Java-Class-Files inkludierst, kannst du mit import ....; auf die darin definierten Klassen und deren Methoden zugreifen.
Sollte er dagegen allein laufen, braucht es einen Einstiegspunkt z.B.: "public static void main(String[] args)", wenn so ein Punkt nicht definiert ist, weiß Java nicht wo und in welche Klasse er einsteigen soll und es gibt einen Fehler.
Verwende Saxon 6.5.2 (so fern du nur XSLT 1 verwendest), darin ist AElfred inkludiert
Unglücklicherweise ist es XSLT 2.0 - und zwar bis zum Exszess ;-) Inklusive selbstdefinierter Funktionen.
Hmm .... versuche es mit AltovaXML: http://www.altova.com/download_components.html
Ebenfalls XSLT 2.0.
Grüße
Thomas
Moin!
» Sollte er dagegen allein laufen, braucht es einen Einstiegspunkt
Ich hatte das so verstanden, daß dies über Jaxp(?) von Saxon aus angestoßen wird.
Hmm .... versuche es mit AltovaXML: http://www.altova.com/download_components.html
Ebenfalls XSLT 2.0.
Aber dummerweise für WinDOS. Ich verwende aber Mac OS X.
-- Skeeve
Hallo,
Hmm .... versuche es mit AltovaXML: http://www.altova.com/download_components.html
Ebenfalls XSLT 2.0.Aber dummerweise für WinDOS. Ich verwende aber Mac OS X.
Ich liebe es, wenn der Fragende wichtige Infos für sich behält!
Grüße
Thomas
Moin!
Aber dummerweise für WinDOS. Ich verwende aber Mac OS X.
Ich liebe es, wenn der Fragende wichtige Infos für sich behält!
??? Es geht um Java! Sollte das nicht überall laufen? Es ist zwar nett, daß Du Alternativen vorschlägst, aber wenn es um Java geht, denke ich nicht, daß das zugrundeliegende System dermaßen wichtig ist.
-- Skeeve
Hallo,
Aber dummerweise für WinDOS. Ich verwende aber Mac OS X.
Ich liebe es, wenn der Fragende wichtige Infos für sich behält!
??? Es geht um Java!
Ne, es ging um ein command-line Sache, dass saxon netterweise eine command-line interface bietet ist ein bonus.
Sollte das nicht überall laufen? Es ist zwar nett, daß Du Alternativen vorschlägst, aber wenn es um Java geht, denke ich nicht, daß das zugrundeliegende System dermaßen wichtig ist.
AltovaXML hat ein Java-Interface das auch funktioniert, aber es funktioniert dennoch nur unter Windows. (Und ich hätte mir das Posting erspart, wenn du Mac gesagt hättest.) und wie man es sieht java ist auch nicht java:
https://forum.selfhtml.org/?t=154805&m=1008200
Aber wenn es jetzt bei dir klappt, dann ist es fein und die Sache gegessen.
Grüße
Thomas
Moin!
Aber wenn es jetzt bei dir klappt, dann ist es fein und die Sache gegessen.
Wie man's nimmt. aelfred ist gestrichen (s.o.). Der stolpert auch über das falsche Protokol. Aber Norman Walshs resolver Klasse hat mir geholfen: http://xml.apache.org/commons/
Damit mappe ich jetzt das verkehrte "protocol:/" auf ein lokales Verzeichnis und die Banane ist geschält.
Naja... Was die Unterschiede Java auf WinDOS und echtem Java ;-) angeht: Ich kümmere mich nicht um WinDOS, von daher kenne ich mich da nicht so aus, und interessiere mich auch nicht sonderlich dafür. Von daher ist meine Unterlassungssünde vielleicht verzeihlich. Aber vielleicht hilft Dein Vorschlag ja jemandem in einer ähnlichen Situation.
-- Skeeve
Moin!
An sich machst du nichts flasch, aber AElfred kann nicht gelade werden, weil es dafür keine Main-Classe im jar definiert ist.
Wohl doch! Der Aufruf muß nämlich so aussehen:
java -cp 'saxon8.jar:saxon-aelfred.jar' net.sf.saxon.Transform -x net.sf.saxon.aelfred.SAXDriver mein.xml mein.xsl
Allerdings stolpert ausch aelfred über das dämliche "Protocol"
-- Skeeve
Hallo,
An sich machst du nichts flasch, aber AElfred kann nicht gelade werden, weil es dafür keine Main-Classe im jar definiert ist.
Wohl doch! Der Aufruf muß nämlich so aussehen:
java -cp 'saxon8.jar:saxon-aelfred.jar' net.sf.saxon.Transform -x net.sf.saxon.aelfred.SAXDriver mein.xml mein.xsl
Würde mich wundern. Das führt zu:
"Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/saxon/Transform
zumindest mit JVM 1.5.0_10
Grüße
Thomas
PS: außer selbst etwas zu schreiben fällt mir nicht mehr ein.
Moin!
Würde mich wundern. Das führt zu:
"Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/saxon/Transformzumindest mit JVM 1.5.0_10
Was soll ich sagen? Ich hab es so aufgerufen und es lief durch. Version:
$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-112)
Java HotSpot(TM) Client VM (build 1.5.0_06-64, mixed mode, sharing)
-- Skeeve