Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > XML > Pass javascript variable to XSL

Reply
Thread Tools

Pass javascript variable to XSL

 
 
zakhirn@gmail.com
Guest
Posts: n/a
 
      09-13-2006
Hello,

I have the follow XML, XSL, and HTML file with javascript:

cd.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"
/>
<title>Untitled Document</title>

<SCRIPT type="text/javascript">

var xslurl = 'cd.xsl';
var xmlurl = 'cd.xml';
var xsl;
var xml;

function IEload()
{


xml = new ActiveXObject("MSXML.DOMDocument");
xml.async = false;
xml.load(xmlurl);
// alert(xml.xml);


}

function IEtransform(queryText)
{

xsl = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
xsl.async = false;
xsl.load(xslurl);
var xsldoc = xsl.documentElement;
var nodelist = xsldoc.selectNodes('//*[@match="query"]');
var queryTemplate = nodelist.item(0);
queryTemplate.setAttribute('match', queryText);
// alert(xsl.xml);


/*try {*/
var templ = new ActiveXObject("MSXML2.XSLTemplate");
templ.stylesheet = xsl;
var xslp = templ.createProcessor();
xslp.input = xml;
xslp.transform();
var results = xslp.output;
var resultDiv = document.getElementsByTagName('div')[0];
resultDiv.innerHTML = results;
document.queryBox.text.value = queryText;
/*
}
catch(e)
{
alert('error: setup xslt: ' + e.description + '\n');
}

*/

}

//-->
</SCRIPT>


</head>

<body onLoad="IEload()">

<form name="queryBox">
<input type="text" name="text" value="Test" />
<input type="button" value="Go"
onClick="IEtransform('//body//p[contains ( . , \'' +
document.queryBox.text.value + '\' )]') ">

</form>

<div class="results">
</div>

</body>
</html>

cd.xsl:
<?xml version="1.0" encoding="ISO-8859-1"?><!-- DWXMLSource="cd.xml"
-->
<xsl:stylesheet version="1.0"
xmlnssl="http://www.w3.org/1999/XSL/Transform"><xsl:template
match="/">
<html>
<head>
<title> XML XSL JS Trial</title>

</head>
<body>
<h2>My CD Collection</h2>

<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd[artist=strSearch]">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template></xsl:stylesheet>

cd.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="cd.xsl"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
<cd>
<title>Still got the blues</title>
<artist>Gary Moore</artist>
<country>UK</country>
<company>Virgin records</company>
<price>10.20</price>
<year>1990</year>
</cd>
<cd>
<title>Eros</title>
<artist>Eros Ramazzotti</artist>
<country>EU</country>
<company>BMG</company>
<price>9.90</price>
<year>1997</year>
</cd>
<cd>
<title>One night only</title>
<artist>Bee Gees</artist>
<country>UK</country>
<company>Polydor</company>
<price>10.90</price>
<year>1998</year>
</cd>
<cd>
<title>Sylvias Mother</title>
<artist>Dr.Hook</artist>
<country>UK</country>
<company>CBS</company>
<price>8.10</price>
<year>1973</year>
</cd>
<cd>
<title>Maggie May</title>
<artist>Rod Stewart</artist>
<country>UK</country>
<company>Pickwick</company>
<price>8.50</price>
<year>1990</year>
</cd>
<cd>
<title>Romanza</title>
<artist>Andrea Bocelli</artist>
<country>EU</country>
<company>Polydor</company>
<price>10.80</price>
<year>1996</year>
</cd>
<cd>
<title>When a man loves a woman</title>
<artist>Percy Sledge</artist>
<country>USA</country>
<company>Atlantic</company>
<price>8.70</price>
<year>1987</year>
</cd>
<cd>
<title>Black angel</title>
<artist>Savage Rose</artist>
<country>EU</country>
<company>Mega</company>
<price>10.90</price>
<year>1995</year>
</cd>
<cd>
<title>1999 Grammy Nominees</title>
<artist>Many</artist>
<country>USA</country>
<company>Grammy</company>
<price>10.20</price>
<year>1999</year>
</cd>
<cd>
<title>For the good times</title>
<artist>Kenny Rogers</artist>
<country>UK</country>
<company>Mucik Master</company>
<price>8.70</price>
<year>1995</year>
</cd>
<cd>
<title>Big Willie style</title>
<artist>Will Smith</artist>
<country>USA</country>
<company>Columbia</company>
<price>9.90</price>
<year>1997</year>
</cd>
<cd>
<title>Tupelo Honey</title>
<artist>Van Morrison</artist>
<country>UK</country>
<company>Polydor</company>
<price>8.20</price>
<year>1971</year>
</cd>
<cd>
<title>Soulsville</title>
<artist>Jorn Hoel</artist>
<country>Norway</country>
<company>WEA</company>
<price>7.90</price>
<year>1996</year>
</cd>
<cd>
<title>The very best of</title>
<artist>Cat Stevens</artist>
<country>UK</country>
<company>Island</company>
<price>8.90</price>
<year>1990</year>
</cd>
<cd>
<title>Stop</title>
<artist>Sam Brown</artist>
<country>UK</country>
<company>A and M</company>
<price>8.90</price>
<year>1988</year>
</cd>
<cd>
<title>Bridge of Spies</title>
<artist>T`Pau</artist>
<country>UK</country>
<company>Siren</company>
<price>7.90</price>
<year>1987</year>
</cd>
<cd>
<title>Private Dancer</title>
<artist>Tina Turner</artist>
<country>UK</country>
<company>Capitol</company>
<price>8.90</price>
<year>1983</year>
</cd>
<cd>
<title>Midt om natten</title>
<artist>Kim Larsen</artist>
<country>EU</country>
<company>Medley</company>
<price>7.80</price>
<year>1983</year>
</cd>
<cd>
<title>Pavarotti Gala Concert</title>
<artist>Luciano Pavarotti</artist>
<country>UK</country>
<company>DECCA</company>
<price>9.90</price>
<year>1991</year>
</cd>
<cd>
<title>The dock of the bay</title>
<artist>Otis Redding</artist>
<country>USA</country>
<company>Atlantic</company>
<price>7.90</price>
<year>1987</year>
</cd>
<cd>
<title>Picture book</title>
<artist>Simply Red</artist>
<country>EU</country>
<company>Elektra</company>
<price>7.20</price>
<year>1985</year>
</cd>
<cd>
<title>Red</title>
<artist>The Communards</artist>
<country>UK</country>
<company>London</company>
<price>7.80</price>
<year>1987</year>
</cd>
<cd>
<title>Unchain my heart</title>
<artist>Joe Cocker</artist>
<country>USA</country>
<company>EMI</company>
<price>8.20</price>
<year>1987</year>
</cd>
</catalog>


basically, what I want to do is take the value from the text box in the
html, and through the javascript load it in the variable strSearch in
the XSL file. I have been taking code from different places so some of
my variables do not match, but if anyone has any idea how to fix this I
would be very happy. Thanks so much!

 
Reply With Quote
 
 
 
 
Joe Kesselman
Guest
Posts: n/a
 
      09-13-2006
I don't do Javascript, but look at the documentation for your XSLT
processor to see how it wants you to pass stylesheet parameters (this,
unfortunately, is not perfectly portable), and look at the XSLT spec for
how to accept them (which should be portable).

--
() ASCII Ribbon Campaign | Joe Kesselman
/\ Stamp out HTML e-mail! | System architexture and kinetic poetry
 
Reply With Quote
 
 
 
 
RC
Guest
Posts: n/a
 
      09-19-2006
http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:

You can use Apache's Xalan Process to do that
But very unfortunately Netscape, IE, Firefox, etc.
browsers don't support Xalan process

http://xalan.apache.org/

<xsl:stylesheet xmlnssl="http://www.w3.org/1999/XSL/Transform"
xmlnsalan="http://xml.apache.org/xalan"

xmlns:my-javascript-ext="my-ext2"
extension-element-prefixes="my-javascript-ext"
version="1.0">

<xslutput method="html" />

<xalan:component prefix="my-javascript-ext" elements="whichever"
functions="hello">
<xalan:script lang="javascript">

function hello(w) {
return ("Hello " + w + "!");
}
</xalan:script>
</xalan:component>

<!--
Test of JavaScript functions, they are working fine in Xalan Process! -->
<xsl:if test="function-available('my-javascript-ext:hello')">
<xsl:value-of select="my-javascript-ext:hello('World')" />

</xsl:stylesheet>
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Pass Javascript variable to XSL File zakhirn@gmail.com Javascript 0 09-13-2006 11:22 PM
xsl:sort using an xsl:variable as the sort key jobooker@gmail.com XML 2 09-05-2006 03:51 PM
XSL Question tp xsl:for-each and xsl:variable schaf@2wire.ch XML 1 05-27-2005 09:25 PM
[XSL] : use array variable in XSL stylesheet MC XML 1 03-24-2005 10:41 AM
Difference between xsl:param and xsl:variable? Karsten Weinert XML 3 07-05-2004 04:58 PM



Advertisments