[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: RE: [xsl] RE: Troubling passing parameter to xsl:sort via ASP


Subject: RE: RE: [xsl] RE: Troubling passing parameter to xsl:sort via ASP
From: cknell@xxxxxxxxxx
Date: Thu, 02 Aug 2007 12:39:40 -0400

Possibly nothing (if your document uses no namespace prefixes), but technically, name() picks up namespaces, where local-name() takes only the local part of the name.

So, with an element like <xsl:template>, the name() of the element is "xsl:template" where local-name() would return "template".
-- 
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     Jessica Hennessey <jessica@xxxxxxxxxxxxxxxxxxxxxxx>
Sent:     Thu, 2 Aug 2007 12:35:28 -0400
To:       <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Subject:  RE: [xsl] RE: Troubling passing parameter to xsl:sort via ASP

Ok...thanks.

I understand that I need to replace $foo with $order, but do I need to do
anything with *[name()?  Also, what is the difference between the following
2 statements?

select="*[name()=$order]"
And
select="*[local-name() = $order]"

Thanks!!!

-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx] 
Sent: Thursday, August 02, 2007 12:27 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] RE: Troubling passing parameter to xsl:sort via ASP


Funnily enough I just posted

<xsl:sort select="$order"/>

as an example of the-most-common-programming-mistakes over on an XQuery
list.

If $order is "foo", then the sort key for every element is the string "foo",
so every element has the same sort key, so they are returned in their
original order. You want select="*[name()=$foo]".

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Jessica Hennessey [mailto:jessica@xxxxxxxxxxxxxxxxxxxxxxx]
> Sent: 02 August 2007 17:12
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] RE: Troubling passing parameter to xsl:sort via ASP
> 
> I am a complete newbie at xml/xsl and can't figure out why my
> parameter is not being "read" by my xsl template.  The XML 
> document is dynamically generated each time the page runs.  I 
> have no control over how that gets generated.
> ****************************************************
> ASP Code:
> Set objXmlHttp1 = Server.CreateObject("Msxml2.serverxmlhttp")
> Set objDom = Server.CreateObject("MSXML2.FreeThreadedDOMDocument")
> objXmlHttp1.send strSend
> xmlOK = objDom.loadXML (objXmlHttp1.responseText)
> 
> set xsl = Server.CreateObject("MSXML2.FreeThreadedDOMDocument")
> xsl.async = false
> xslOK = xsl.load(Server.MapPath("includes/joblist.xsl"))
> 
>  set xslt = Server.CreateObject("MSXML2.XSLTemplate")
>  set xslt.stylesheet = xsl
>  Set xslProc = xslt.createProcessor()
>  xslProc.input = objDom
>  xslProc.addParameter "order", request("order")
> xslProc.transform  sOutput = xslProc.output  response.write 
> sOutput  set xslProc = nothing  set xslt = nothing
> ******************************************************************
> 
> XSL Code:
> 
> <?xml version='1.0'?>
> <xsl:stylesheet version="1.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:param name="order"/>
> 
> <xsl:template match="/">
>       <xsl:for-each select="root/job">
>    <xsl:sort select="$order" order="ascending"/>
> 
>       <tr>
>         <td><a>
>    <xsl:attribute name="href">jobdetail.asp?jobid=<xsl:value-of
> select="JOBPOSTINGID_INT"/></xsl:attribute>
>    <xsl:value-of select="TITLE_STRING" /></a></td>
>   <td><xsl:value-of select="CITY_STRING"/>, <xsl:value-of
> select="STATE_STRING"/></td>
>         <td><xsl:value-of select="EMPLOYMENTTYPE_STRING"/></td>
>       </tr>
>       </xsl:for-each>
> </xsl:template>
> </xsl:stylesheet>
> **************************************************************
> ************
>  
>  
> Jessica Hennessey
> Sunlight Studios - Internet Consulting & Development
> www.sunlightstudios-icd.com


Current Thread
Keywords