Frank Hirsch: JavaScript Variable in XSL übergeben

Beitrag lesen

Hmmm,

an Variablen bin ich auch dauernd am rumbohren. Aber was wichtig ist: welchen Parser setzt Du ein? Öffnest Du die XML-Datei im InternetExplorer wendet dieser die angegebene XSL-Datei an mittels des MSXML (Microsoft). Machst Du das Ganze in XML-Spy macht's i.d.R XT von James Clark...

Also im Klartext: diese Prozessoren führen kein Javascript aus (siehe in Deinem <SCRIPT> Tag). Der JSCode wird dann erst beim Laden des temporär generierten HTML im Browser ausgeführt.

Statt dessen musst Du eine Funktion finden (Funktionen in XSL sind bsw. "document(), string(), text(), etc") die diese Aufgabe macht. Der XSL-Code für die Variable heisst dann:

...
    <xsl:variable name="xmlfile">
         <xsl:value-of select="document()"/>
    xsl:variable
...

Referenziert wird diese Variable dann mit {$xmlfile}.

Eine Funktion um in purem XSL den Dokument-URI zu bekommen weiss ich leider nicht. Ich kann Dir aber noch den Tip geben eventuell selber zu Skripten (VB im MSXML-Parser, Java in XT...), habe ich aber noch nie gemacht.

Gruß und good luck,
Frank

Hi,

Ich schaffe es immer noch nicht, eine JavaScript Variable in XSL zu übergeben.

Ich werde mein Problem nochmal anhand von den Dateien verdeutlichen.

ich habe hier die test.xml und die test.xsl:
http://mitglied.lycos.de/cyberfuzzy/tmp/xml/testfiles.html

Wenn man die test.xml aufruft, soll als erstes ganz oben links der Name der Datei (also test.xml) erscheinen.
Es erscheint jedoch nichts.

In der test.xsl habe ich ein Javascript. Dort ist eine Funktion, die mir den Wert "test.xml" zurückliefert.

Das Problem ist jetzt: Ich möchte den Wert, den mir die JavaScript-Funktion zurückliefert als XSL-Variable haben.

Mein Lösungsversuch war einfach eine Javascript ausgabe in der xsl:varialbe:
<xsl:variable name="xmlfile">
<SCRIPT>xsl:comment<![CDATA[
document.write(xmlfile());
//]]></xsl:comment></SCRIPT>
</xsl:variable>

Wie man sieht, funktionier es so leider nicht. In der xsl Variable steht nichts drin.

Ich habe jetzt zwar schon mitbekommen, dass es so irgendwie nicht funktionieren kann, sondern dass man es mit DOM machen muss.
Da ich aber erst seit kurzem mit XSL zu tun habe, sagt mir DOM nichts.

Wie muss ich meinen Code also umändern, dass ich das richtige in meiner xsl:variable habe?

Danke für euren Zeitaufwand und sorry für die, die sich aufregen, dass ich nicht im selben Thread wie unten gepostet habe: Ich habs versucht, aber anscheinend hat das keiner mehr gesehen.