# XSL:eine XSL variable in JavaScript einbinden



## jah (5. Januar 2005)

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


----------



## banjo1 (24. Februar 2005)

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. 


```
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>
```


----------



## vogtländer (24. Februar 2005)

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:

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

Beste Grüße
Falk


Nachtrag: @Banjo

Den CDATA-Abschnitt musst du für die Variablenausgabe natürlich unterbrechen.


----------



## Portos (8. September 2005)

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


----------

