Re: [xsl] Comparing and re-assigning variables.

Subject: Re: [xsl] Comparing and re-assigning variables.
From: Mike Brown <mike@xxxxxxxx>
Date: Mon, 24 Feb 2003 11:04:24 -0700 (MST)
G. Ken Holman wrote:
> At 2003-02-24 14:22 +0000, Ragulf Pickaxe wrote:
> >I have never tried putting a for-each inside a variable, but if that is 
> >possible in the specs, could you then not do something like:
> >
> ><xsl:variable name="SorterList">
> >  <xsl:for-each select="report-root/txns">
> >    <xsl:sort select="cpmBI"/>
> >    <xsl:sort select="date"/>
> ></xsl:variable>
> >
> ><xsl:variable name="SortList2" 
> >select="document('')/xsl:stylesheet/xsl:template/xsl:variable[@name='SortList']/cpmMemBI"/>
> 
> The above is addressing the xsl:variable node and its descendent 
> instructions in the stylesheet node tree and not any real-time evaluation 
> of the variable's value.
> 
> >Then loop trough SortList2 and get the values of the current and preceding 
> >cpmMemBI element?
> >
> >I don't know if this is at all possible (and if the syntax should differ), 
> >but I think this would be easier than a two-pass solution.
> 
> This is not possible in XSLT 1.0.
> 
> XSLT 2.0 proposes that result tree fragment variables are different and can 
> be addressed as nodes, so it will be possible to build the variable as a 
> set of nodes and then address those nodes later.

You knew someone would mention it...

All XSLT 1.0 processors offer an extension function, most commonly in the
EXSLT namespace, but sometimes in a vendor-specific namespace, that converts a
result tree fragment to a node-set.

<xsl:variable name="SortedList_RTF">
  <xsl:for-each select="report-root/txns">
    <xsl:sort select="cpmBI"/>
    <xsl:sort select="date"/>
    <xsl:copy-of select="."/>
  </xsl:for-each>
</xsl:variable>
<xsl:variable name="SortedList" select="exsl:node-set($SortedList_RTF)/cpmMemBI" 
xmlns:exsl="http://exslt.org/common"/>

Mike

-- 
  Mike J. Brown   |  http://skew.org/~mike/resume/
  Denver, CO, USA |  http://skew.org/xml/

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread