XSL JavaScript
Florian
- xsl
Hallo,
ich habe schón viele Beispiele gesehen bzw. gefunden, wie ich JavaScript Code in HTML einbetten kann. Habe aber nix gefunden, wie ich JavaScriptCode in XSLT einbetten kann, also wie ich Funktionen Definieren kann, sie aufrufen kann usw...
Wie funktioniert das?
Benötige es da ich in meinem xslt-sheet mit Select-Boxen arbeiten muß, jedoch das XML-File nicht verändern darf.
MFG
Florian
Hallo
Das sollte ganz einfach sein. Schreib die JS-Blöcke einfach in einen CDATA-Tag am entsprechenden Ort deines Stylesheets...
Grüsse
Hallo
Das sollte ganz einfach sein. Schreib die JS-Blöcke einfach in einen CDATA-Tag am entsprechenden Ort deines Stylesheets...
Grüsse
Wie sieht denn so ein CDATA-Tag aus?
Kann ich den an jede Stelle im Sheet schreiben, oder muß dieser am Anfang der XSLT-Datei rein?
MFG
Florian
Hallo
Kann grundsätzlich überall sein, ein CDATA. Anbei mal ein Schnipsel aus einem meiner Templates:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="pragma" content="no-cache"/>
<META HTTP-EQUIV="Expires" CONTENT="-1"/>
<link rel="stylesheet" href="/css/fonts.css"/>
<title>Editieren eines Dokumentes</title>
<SCRIPT SRC="/js/xparse.js"></SCRIPT>
<script language="javascript">
var g_xml = "<xsl:variable name="prep1" select="translate(ccxml,' ','|')"/><xsl:variable name="prep" select="translate($prep1,' ','')"/><xsl:value-of select="translate($prep,'"','¦')"/>";
<![CDATA[
var xhelp = 11;
//alert (g_xml);
g_xml = unesc(g_xml); // reget double quotes and returns
//alert (g_xml);
...
]]>
</script>
</head>
Hoffe, dies hilft weiter.
Grüsse
gant
Nachtrag:
Der CDATA-Bereich dient dazu, teile eines Templates zu definieren, welche vom Parser nicht geparst werden. d.h. alles innerhalb von CDATA wird genauso in die Ausgabedatei übernommen, wie es im Template steht...
Danke, werde es ausprobieren.
MFG
Florian
Hi,
ich habe schón viele Beispiele gesehen bzw. gefunden, wie ich JavaScript Code in HTML einbetten kann. Habe aber nix gefunden, wie ich JavaScriptCode in XSLT einbetten kann, also wie ich Funktionen Definieren kann, sie aufrufen kann usw...
Ich wüßte keinen XSLT-Prozessor, der Javascript kann...
Oder willst Du Javascript im erzeugten HTML haben?
Dann unterscheiden sich script-Elemente nicht wesentlich von anderen HTML-Elementen - außer daß man wegen CDATA ggf. aufpassen muß.
cu,
Andreas
Hi Andreas,
Ich wüßte keinen XSLT-Prozessor, der Javascript kann...
ich kenne da sogar zwei :-) MSXML ab Version 3, und Xalan-Java.
Gruß,
Martin
Hallo,
Ich wüßte keinen XSLT-Prozessor, der Javascript kann...
ich kenne da sogar zwei :-) MSXML ab Version 3, und Xalan-Java.
Das sind aber Prozessoreigene erweiterungen (wie <xalan:script lang="javascript">) und damit begibt man sich in eine Abhängigkeit in doppelter hinsicht: die XSLs können dann nur von diesen Prozessoren verarbeitet werden und wenn in einer neueren Version sich was ändert, sinst man ggf. auch blöd da.
Was nicht heisst, dass man es nicht tun kann, nur sollten die Nachteile auch klar sein.
Grüße
Thomas
Hi Thomas,
Das sind aber Prozessoreigene erweiterungen
das ist klar. Wenn man erweiterte Funktionalität braucht, dann sollte man zuerst bei XSLT extensions schauen. Das ist zwar noch kein Standard, aber auf dem Weg dorthin.
Um ehrlich zu sein, ich mache soviel mit XSL, dass ich hier in der Firma die Anlaufstelle für Fragen rund um XSL bin. Aber gebraucht habe ich das Script erst einmal, und ich weiß nicht mal mehr warum :-)
Gruß,
Martin
Hallo,
Um ehrlich zu sein, ich mache soviel mit XSL, dass ich hier in der Firma die Anlaufstelle für Fragen rund um XSL bin.
Tja, dann geht es dir nicht anderes als mir, fast 90% meiner Arbeit macht XML/XSL-Entwicklung aus ;-)
Grüße
Thomas