xsl <> javascript variablen übergeben

vki_zwirbeli

Grünschnabel
Guten Tag

Ich habe eine XML-Datei mit Polarkoordinaten (Winkel und Distanz). Die Winkel sind in gon angegebenin (Umrechnung in Radian 1 gon = 2 PI rad / 400). Ich möchte aus diesen Angaben x/y-Koordinaten berechnen und später im SVG etwas darstellen.
Das Ganze soll innerhalb eines XSL-Stylesheets geschehen.

XSL kennt ja keine trigonometrische Funktionen, weshalb ich die Umrechnung mit JavaScript machen muss. Wie kann ich jetzt aber aus dem XSL meine Winkel und Distanz-Variable an JavaScript übergeben, und nachher die x/y-Koordinaten wieder zurückgeben?

Ich habe mal eine JavaScript Funktion erstellt, die das gewünschte Resultat liefert. Dann hab ich versucht, die ins XSL einzubauen. Ich habe das mit einem Named Template versucht, um die Variablen als Parameter ins JS zu übergeben. Wie aber bekomme ich die Variablen aus dem JS ins XSL und dann aus dem Berechnungs-Template, sodass ich sie später im SVG verwenden kann?

Angehängt meine JS Funktion und mein Template.

Vielen Dank für eure Hilfe!

<html>
<head>
<script type="text/javascript">
var azi=99;
var dist=11.97;

function JSCalcCoord(azi,dist)
{
var x,y;
var radians;
var cos, sin;

radians = (azi * 400) / (2 * Math.PI);
cos = Math.cos(radians);
sin = Math.sin(radians);

x = dist * cos;
y = dist * sin;

// Neues Objekt
return {x:x,y:y};

}
</script>
</head>

<body>
<script type="text/javascript">

Koord=JSCalcCoord(azi,dist);
document.write('x-Koord: '+Koord.x+' y-Koord: '+Koord.y );

</script>

</body>
</html>

-----------------------------------------------

<xsl:template name="JSCalcCoord">
<xsl:param name="azi"/>
<xsl:param name="dist"/>
<SCRIPT language="JavaScript">
var radians = (<xsl:value-of select="$azi"/> * 400) / (2 * Math.PI)";
var cos = Math.cos(radians);
var sin = Math.sin(radians);
var x_koord = $dist * cos
var y_koord = $dist * sin
return {x:x,y:y}; // ****?
</SCRIPT>

</xsl:template>
 
Hi.

Man kann (standardmäßig) keine Skripte in XSL einbetten.

Bei bestimmten XSL Prozessoren kann man allerdings selbstgeschriebene Funktionen registrieren und diese dann direkt wie XSL Funktionen verwenden.

Was willst du denn mit dem Stylesheet für eine Ausgabe erzeugen? Darin könntest du evlt. deine Javascript Funktion einbetten.

Gruß
 
Hallo

Meine Ausgabe soll auf dem oberen Teil der Seite eine Tabelle mit bestimmten Werten aus dem XML-File enthalten, darunter eine Darstellung einer Fläche ( > SVG) mit einzelnen Messpunkten aus dem XML. Doch die Koordinaten muss ich zuerst noch umrechnen, darum sin / cos.
Da diverse Leute von verschiedenen Compis her diese Seite anschauen können, sollte es keine Zusatzinstallationen brauchen (>Standardbrowser). D.h. ich kann XSLT 2.0 (>Funktionen) nicht brauchen.

Danke und Gruss
 
Hi.

Dann erzeuge aus der XML Datei per XSL Javascript Code der deine Tabelle mit den entsprechenden Daten berechnet.

Gruß
 

Neue Beiträge

Zurück