XSL:eine XSL variable in JavaScript einbinden

jah

Grünschnabel
Hallo

Ich habe folgendes Problem:

Ich habe in eine XSL-Datei(generiert dann eine SVG datei) Javascript eingebunden.
nun will ich den Zoom des SVG bildes über XML steuern:

javascript:

var document = evt.getTarget().getOwnerDocument();
var svgElement = document.getDocumentElement();

document.documentElement.getCurrentScale=svgElement('zooming'); (hier ist das Problem (wenn ich eine Zahl neben das Gleichzeichen setze, dann funkitonierts, aber ich will den wert von der XML datei.)

XSL:
<xsl:for-each select="data">
<xsl:variable name="zoom">
<xsl:value-of select="zoom"/> (das zoom ist ein XML-tag/knoten)
</xsl:variable>
</xsl:for-each>

Ach ja das SVG-bild wird dann in eine HTML Seite geladen und via IE betrachtet

Ich kann aus Datenschutzgründen nicht die ganze datei Reinkopieren sorry, Hoffe trotzdem jemand versteht was ich tun will.

Danke im Voraus Jah
 
Zuletzt bearbeitet:
HI,

ich habe ein ähnliches Problem! Leider auch noch keine Lösung aber vielleicht ja inzwischen Du?
Ich möchte auch eine XSL Variable an JavaScript übergeben nur wie?
In rot die Variable und die JavaScriptzeile die noch falsch ist.

Code:
  xsl:when test="/WEB2CAD/@preview">
 		 		 		 	<xsl:if test="@drawing3d=''">
 		 		 		 		<div class="svg_symbolbar" id="svg_symbolbar" style="top: 0px">
 		 		 		 			<table width="660px" cellpadding="0" cellspacing="0" border="0" align="left">
 		 		 		 		 	<tr>
 		 		 		 		 	
 		 		 		 		 	<td width="200">&nbsp;<IMG border="0" src="../common/pic/cart22.gif"/><font face="Arial" size="2">nicht mehr bestellbar</font></td>
  
 		 		 		 		 	<!-- PRODUCT NAME -->
 		 		 		 		 	
 		 		 		 		 	<TD id="space_title" class="title" valign="bottom"><xsl:value-of select="@name"/></TD>
 		 		 		 		 	
 		 		 		 		 	<td></td>
 		 		 		 		 	<td width="20"><A href="javascript:doNothing()"><SPAN id="pan" class="svgbutton"><IMG border="0" src="../common/pic/pan.png"/></SPAN></A></td>
 		 		 		 		 	<td width="20"><A href="javascript:doNothing()"><SPAN id="zoomin" class="svgbutton"><IMG border="0" src="../common/pic/zoomin.png"/></SPAN></A></td>
 		 		 		 		 	<td width="20"><A href="javascript:doNothing()"><SPAN id="zoomout" class="svgbutton"><IMG border="0" src="../common/pic/zoomout.png"/></SPAN></A></td>
 		 		 		 		 	<td width="20"><A href="javascript:doNothing()"><SPAN id="zoominwindow" class="svgbutton"><IMG border="0" src="../common/pic/zoom.png"/></SPAN></A></td>
 		 		 		 		 	<td width="20"><A href="javascript:doNothing()"><SPAN id="showall" class="svgbutton"><IMG border="0" src="../common/pic/selectall.png"/></SPAN></A></td>
 		 		 		 		 	<td width="20"><A href="javascript:doNothing()"><SPAN id="homeview" class="svgbutton"><IMG border="0" src="../common/pic/home.png"/></SPAN></A></td>
 		 		 		 		 	</tr>
 		 		 		 			</table>
 		 		 		 		</div>
 		 		 		 	</xsl:if>
 		 		 		 </xsl:when>
 		 		 		 <xsl:otherwise>
 		 		 		 	<script language="JavaScript">
 		 		 		 		<xsl:comment>
 		 		 		 		<xsl:choose>
 		 		 		 			<xsl:when test="@drawing3d!=''">
 		 		 		 			 <![CDATA[
 		 		 		 			 document.writeln('<div class="svg_symbolbar" id="svg_symbolbar" style="top: -40px">');
 		 		 		 			 ]]>
 		 		 		 		 </xsl:when>
 		 		 		 		 <xsl:otherwise>
 		 		 		 			 <![CDATA[
 		 		 		 			 document.writeln('<div class="svg_symbolbar" id="svg_symbolbar" style="top: 0px">');
 		 		 		 			 ]]>
 		 		 		 		 </xsl:otherwise>	 		 		 		
 		 		 		 	 </xsl:choose>	 		 		 		
 		 		 		 	 <![CDATA[
 		 		 		 	 document.writeln('<table width="660px" cellpadding="0" cellspacing="0" align="left">');
 		 		 		 	 document.writeln('<tr>');
 		 		 		 		document.writeln('<td width="200">&nbsp;<IMG border="0" src="../common/pic/cart22.gif"/><font face="Arial" size="2">nicht mehr bestellbar</font></td>'); 		 		 	 
 		 		 		 		document.writeln('<td id="space_assembly" class="title" valign="bottom">' + name + '></td>'); 		 		 			
 		 		 		 	 document.writeln('<td></td>');
 		 		 		 	 document.writeln('<td width="20"><A onmousedown="toolBar(\'pan\')" href="javascript:doNothing()"><SPAN id="pan" class="svgbutton"><IMG border="0" src="../common/pic/pan.png" alt="' + strPan + '"/></SPAN></A></td>\n');
 		 		 		 	 document.writeln('<td width="20"><A onmousedown="toolBar(\'zoomIn\')" href="javascript:doNothing()"><SPAN id="zoomin" class="svgbutton"><IMG border="0" src="../common/pic/zoomin.png" alt="' + strZoomIn + '"/></SPAN></A></td>\n');
 		 		 		 	 document.writeln('<td width="20"><A onmousedown="toolBar(\'zoomOutA\')" onmouseup="toolBar(\'zoomOutE\')" href="javascript:doNothing()"><SPAN id="zoomout" class="svgbutton"><IMG border="0" src="../common/pic/zoomout.png" alt="' + strZoomOut + '"/></SPAN></A></td>\n');
 		 		 		 	 document.writeln('<td width="20"><A onmousedown="toolBar(\'zoomInWindow\')" href="javascript:doNothing()"><SPAN id="zoominwindow" class="svgbutton"><IMG border="0" src="../common/pic/zoom.png" alt="' + strZoomWindow + '"/></SPAN></A></td>\n');
 		 		 		 	 document.writeln('<td width="20"><A onmousedown="toolBar(\'showAllHotspots\')" onmouseup="toolBar(\'hideAllHotspots\')" href="javascript:doNothing()"><SPAN id="showall" class="svgbutton"><IMG border="0" src="../common/pic/selectall.png" alt="' + strShowHotspots + '"/></SPAN></A></td>\n');
 		 		 		 	 document.writeln('<td width="20"><A onmousedown="toolBar(\'homeViewA\')" onmouseup="toolBar(\'homeViewE\')" href="javascript:doNothing()"><SPAN id="homeview" class="svgbutton"><IMG border="0" src="../common/pic/home.png" alt="' + strHomeView + '"/></SPAN></A></td>\n');
 		 		 		 		document.writeln('</tr>');
 		 		 		 	 document.writeln('</table>');
 		 		 		 	 document.writeln('</div>');
 		 		 		 	 ]]>
 		 		 		 	//</xsl:comment>
 		 		 		 	</script>	 		 			
 		 		 		 </xsl:otherwise>
 		 		 		</xsl:choose>
 		 		 	</xsl:if>
 
Es ist mir ja wurscht, ob XSL eine Variable in einen Javascript-Befehl ausgeben soll und soweit ich weiß kümmert sich XSL auch nicht drum, also mal ganz allgemein, wie gibt man mit XSL eine Variable aus.

Sofern die Variable korrekt angelegt und erreichbar ist, wird sie z.B. mit <xsl:value-of select="variable" /> ausgegeben. Dabei ist darauf zu achten, dass XSL-Variablen mit einem $-Zeichen als Variablen angesprochen werden und nicht wie Attribute eines Knotens mit dem @.

Also:
Code:
<xsl:value-of select="$zoom"/>

Beste Grüße
Falk


Nachtrag: @Banjo

Den CDATA-Abschnitt musst du für die Variablenausgabe natürlich unterbrechen.
 
Zuletzt bearbeitet:
versuchs mal mit folgender Konstruktion:

<xsl:text> Hier steht deine JavaScriptanweisung bis zum Wert </xsl:text><xsl:value-of select="zoom"/><xsl:text> hier steht der Rest deiner JavaScript-Anweisung </xsl:text>


Musst allerdings aufpassen, dass du innerhalb der JS die XML/XSL-spezifischen Zeichen maskierst. mit z.B. &lt; für <.

Gruss
Tom
 
Zurück