[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Get Variables in XSL from URL

Subject: Re: Get Variables in XSL from URL
From: Andrew Franz <afranz0@xxxxxxxxxxxxxxxx>
Date: Sat, 29 Apr 2006 11:01:06 +1000
jsp get variables
This is not strictly on-topic - however, my experience is that parameters are best handled outside of XSL (and server-side if possible)

The following function removes certain request parameters (in this example, those suffixed with .x or .y) & reassembles & reloads the URL without them.
Maybe you can adapt it for your needs.


function delparam() {
var oldurl = parent.document.location.href;
var qparts = oldurl.split("?");
var newurl = qparts[0];
if (qparts.length > 1) {
// remove any "rqop" parameter, or operations will be repeated
var vars = qparts[1].split("&");
var sep = "?";
for (var i=0; i < vars.length; i++) {
var parts = vars[i].split("=");
if ((parts[0].substr(parts[0].length-2) == ".x") || (parts[0].substr(parts[0].length-2) == ".y")) {
// do nothing
} else {
newurl += sep+ parts[0]+ "="+ parts[1];
sep = "&";
}
}
}
parent.document.location.href = newurl;
}


Server-side, I use the following approach:
This snippet is JSP but I imagine that you can adapt it as well.
It excises the parameters named in "list" and returns the others in a <request> tag for further processing by XSL.


<c:set var="list" value="${fn:split('spr,sprname,listinterval,listsrc', ',')}" />
<c:set var="listplus" value="${fn:join(list,',')}," />
<request>
<c:forEach var="par" items="${paramValues}">
<c:forEach var="value" items="${par.value}">
<c:set var="keyplus" value="${par.key}," />
<c:if test="${not fn:contains(listplus, keyplus)}">
<jsp:element name="${par.key}">${value}</jsp:element>
</c:if>
</c:forEach>
</c:forEach>
</request>





miouge@xxxxxxxxxxx wrote:


Hello,
I would like to get some variables from the URL (file.xml?var1=value1&var2=value2) in the test.xml's xsl file (all of this in the client-side) and so have try this code:
<msxsl:script language="javascript" implements-prefix="prefix">
function getURLvar(name){
 var params = location.search.substring(1).split("&");
 var variables = new Array();
   for (i in params) {
     var segments_var = params[i].split("=");
     variables[segments_var[0]] = unescape(segments_var[1]);
   }
 function setFile(file) {
   iSend = send;
 }
return variables[name];
}
</msxsl:script>

and use this one to print on screen the value of the GET variables....

<xsl:value-of select="prefix:getURLvar(test)" />

But it seems not to be a good Method... and i ask if their is a better solution to achieve my goal.

Thanks, and sorry for my bad english.

Maxime G.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.