XALAN Transformer mag '&' nicht :((

Hallo Experte,

ich habe eine Frage bitte …
ich habe eine xml datei und dazu eine xsl datei. mit hilfe des XALAN Transformer kann ich aus xml + xsl eine html datei erstellen, z.B. so sieht der command im CMD aus :

Testxslt.exe -IN test.xml -XSL test.xsl -OUT test.html

OK, bisher klappt es auch alles ganz gut. NUn habe ich einen LINK in meinem XSL datei eingebaut:

http://localhost:8080/servlet/Convert?quelle=daten/test.xml&sheet=daten/my.xsl

Danach wollte ich wieder eine neue HTMLseite erstellen, doch dieses mal meckert der XALAN Transformer.

Fehlermeldung:

XSL WARNING: Fatal Error at (file test.xsl, line 73, column 161) Expected entity name for reference, line 73, offset 161

Ich habe es herausgefunden, dass er das Zeichen „&“ nicht mag.
Es steht in „…daten/test.xml&sheet=daten/my.xsl“
Ich brauche aber dieses Zeichen genau an der richtigen Stelle.
Ich habe es auch mit einem anderen Zeichen probiert, und es klappt wunderbar, alle anderen Zeichen funktionieren, nur „&“ nicht.
Kann jemand mir da helfen bitte ?

Vielen Dank !

Loren :smile:

PS: übrigens den XALAN Transformer habe ich bei http://xml.apache.org/ heruntergeladen !

Hallo Loren,

ich weiss nicht ob’s funktioniert, da ich über keinen
XALAN Transformer verfüge, aber probier mal folgendes aus:

Schreibe anstatt &

 %26 

Gruss

Chris

Hallo Chris,

es hat leider nicht funktioniert :frowning:((
Es ist nämlich ein Link, der ich im XSL definiere.
Dieser Link enthält 2 Parametern, die an einem Servlet übergebe.

D.h. wenn ich aus test.xml + my.xsl durh XalanTransformer schicke, dann erhalte ich eine html-seite (test.html) …
in der test.html steht dann der Link (exakt wie in der my.xsl),nämlich http://localhost:8080/servlet/Convert?quelle=daten/hallo.xml&sheet=daten/hallo.xsl

da es in der Link ein Zeichen „&“ gibt, will der XalanTransformer nicht akzeptieren beim TRansformieren. Er meldet Fehler, irgendetwas mit entity code reference … (alle anderen zeichen funktioniert) …

also, habe ich anstatt „&“ %26 eingegeben und transformiert, es kommt zwar kein fehler, aber in der html-datei (test.html) soll dann richtig angezeigt werden „&“, aber nein, es steht genau wie in der xsl-datei, nämlich noch %26 , er wandelt also nicht um !

Was kann ich da noch machen bitte ? Kannst du mir helfen ? ich weiss kein rat mehr :frowning:(

Danke für Deine Hilfe im voraus !

Loren

email:[email protected]

PS:bei Bedarf kann ich die Dateien auch dir zu schicken !

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das ist ja Absicht, das %26 dort steht. Nach der Definition
der URI (uniform resource identifier) ist das auch zulässig.
Das heisst der Link funktioniert!

Kleine Probe:

http://www.wer-weiss-was.de/cgi-bin/forum/searcharch…

Gruss Christoph

Hallo Christoph,

naja, irgendwie funktioniert oder versteht der Servlet nicht.
Diese Parameterübergabe an den Servet … Convert?quelle=daten/hallo.xml%26sheet=daten/hallo.xsl
…erwartet der Servet ein „&“ Zeichen zwischen daten/hallo.xml&sheet=daten/hallo.xsl … und aus dem Link steht %26 und kein „&“ Zeichen, deswegen meckert der Servlet mit der Meldung „No style parameter supplied“ …
… vielleicht noch eine andere Möglichkeit ? :smile:

Danke dir nochmals im voraus !

Loren

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danach wollte ich wieder eine neue HTMLseite erstellen, doch
dieses mal meckert der XALAN Transformer.

Fehlermeldung:

XSL WARNING: Fatal Error at (file test.xsl, line 73, column
161) Expected entity name for reference, line 73,
offset 161

Das ‚&‘ Zeichen leitet in XML eine Entity ein, und muss daher selbst über eine Entity codiert werden, wie die Umlaute in HTML-Seiten. Die Entity für ‚&‘ ist & amp; (Kein Leerzeichen zwischen & und amp, aber wenn ich’s weglasse wird’s hier auch zum normalen Ampersand konvertiert)
Damit sollte es eigentlich funktionieren.

mfg
Stefan

Hallo Stefan,

es hat funktioniert :smile:)))

yeahhhh … danke danke danke danke :smile:)

Gruss,

Loren :smile:)))

Danach wollte ich wieder eine neue HTMLseite erstellen, doch
dieses mal meckert der XALAN Transformer.

Fehlermeldung:

XSL WARNING: Fatal Error at (file test.xsl, line 73, column
161) Expected entity name for reference, line 73,
offset 161

Das ‚&‘ Zeichen leitet in XML eine Entity ein, und muss daher
selbst über eine Entity codiert werden, wie die Umlaute in
HTML-Seiten. Die Entity für ‚&‘ ist & amp; (Kein Leerzeichen
zwischen & und amp, aber wenn ich’s weglasse wird’s hier auch
zum normalen Ampersand konvertiert)
Damit sollte es eigentlich funktionieren.

mfg
Stefan