XML und JavaScript
Anton Peissinger
- xml
Servus zusammen.
Ich hab da volgendes Problem...
Wie kann ich eine Variable, die ich mittels
JavaScript belegt habe (Rückgabewert einer Funktion, usw.)
in XSLT wieder verwenden?
Vielleicht konkreter:
In XSLT gibts jede Menge Tags,
wie z.B. xsl:variable, mit der ich mir im Stylesheet
eine neue Variable definieren kann.
Wie kann ich nun dieser Variable den Inhalt der
JavaScript-Variablen zuweisen?
Vielleicht fällt Euch was dazu ein.
Vielen Dank im Voraus
Anton
Hallo!
In XSLT gibts jede Menge Tags,
wie z.B. xsl:variable, mit der ich mir im Stylesheet
eine neue Variable definieren kann.
Wie kann ich nun dieser Variable den Inhalt der
JavaScript-Variablen zuweisen?
<xsl:variable name="n" select="2"/>
...
<xsl:value-of select="item[$n]"/>
oder so:
<xsl:variable name="n">2</xsl:variable>
...
<xsl:value-of select="item[position()=$n]"/>
Da ich nicht genau weiss was du möchtest kann ich folgendes "anbieten":
http://msdn.microsoft.com/xml/xslguide/script-eval.asp
und
http://msdn.microsoft.com/xml/xslguide/script-expr.asp
Hoffe das ist das was du suchst.
Grüße
Thomas
<xsl:variable name="n" select="2"/>
...
<xsl:value-of select="item[$n]"/>oder so:
<xsl:variable name="n">2</xsl:variable>
...
<xsl:value-of select="item[position()=$n]"/>Da ich nicht genau weiss was du möchtest kann ich folgendes "anbieten":
http://msdn.microsoft.com/xml/xslguide/script-eval.asp
und
http://msdn.microsoft.com/xml/xslguide/script-expr.aspHoffe das ist das was du suchst.
Grüße
Thomas
Irgendwie ist das nicht so das richtige:
Ich versuchs mal so:
Ich hab z.B. folgendes Stylesteet:
<?xml version="1.0"?>
<?xsl:stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0"?>
<xsl:template match="/">
<html>
<head>.....<head>
<body>
<form action="..." ...>(nicht so wichtig)
<input type="hidden" name="xx" value="{return();}"/>
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Wo muss ich nun die JavaScript-Funktion definieren, damit sie auch
ausgewertet wird?
1. Ganz am Anfang des Stylesheets (also nach <?...?>)
2. Nach xsl:template...
3. Im Header der danach vorliegenden HTML-Datei
4. Direkt vorm Aufruf
5. An anderer Stelle
Oder geht das vielleicht gar nicht?
Vielleicht habt Ihr eine Idee, wie man das Problem lösen könnte.
In diesem Sinne
Anton
Hi Anton,
also erst mal: die Funktion schreibst Du in Deinem Template dort, wo Du sie in einer HTML-Datei auch unterbringen würdest (vermutlich also im Head). Falls es damit zu Ärger kommt (hab's selber noch nicht probiert), könntest Du 'nen CDATA-Bereich draus machen müssen.
An Deinem Code fällt mir aber besonders auf:
<input type="hidden" name="xx" value="{return();}"/>
^^^^^^^^^^^
Was soll'n das sein? Das ist entweder ne JS-Syntax, die mir bislang völlig unbekannt blieb, oder aber eben einfach falsch.
Vorschlag: Schreib erst 'ne HTML-Seite, wenn die funktioniert, kannst Du einfach dort, wo Daten aus 'ner XML-Datei sein sollen, Deine XSL-Anweisungen notieren und so daraus 'ne XSL-Datei machen.
Grüße,
Utz
An Deinem Code fällt mir aber besonders auf:
<input type="hidden" name="xx" value="{return();}"/>
^^^^^^^^^^^
Grüße,Utz
Servus.
Die Syntax mit den geschweiften Klammern ist laut
Doku des Oracle XSQL-Servlets durchaus richtig und
der Browser (IE5) meckert zwar, aber nur insofern, da er die
Definition der Funktion return() (in diesem Fall)
nicht finden kann.
Allerdings hat sich das Problem jetzt anderweitig gelöst.
Ich definiere mir jetzt einfach im HTML-Frameset Variablen,
über die ich dann mittels "top.variable" drauf zugreifen
werde.
Die XML-Seiten werden nämlich in einem Frameset
angezeigt.
Das ist meiner Meinung eine einfachere Lösung.
Hätte vielleicht schon früher draufkommen können.
Drotzdem vielen Dank für die Mühe
Anton