[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XSL Variable not getting set
George Cristian Bina wrote:
Note that the xsl:if is placed differently from the OP, outputting no line at all when @fiscalyear = null, whereas the original output an empty string instead (leaving the comma). Because all we are dealing with are sequences, you can downsize the example of George even further, removing any addition if-statements altogether. Here's a go: <xsl:template match="niku:Records"> <xsl:for-each-group select="niku:Record" group-by="concat(@fiscalyear,@gl)"> <xsl:value-of select=" (@fiscalyear[.!='null'], '')[1], (@gl[.!='null'], '')[1], for $i in 1 to 12 return (current-group()[@month=$i]/@cost, 0)[1]" separator="," /> </xsl:for-each-group> </xsl:template> If you don't like the constructs of the type (@fiscalyear[.!='null'], '')[1] you can replace them with the if-equivalents, of course. Also, it will add to readability with the aforementioned micro pipeline, which will make the same template look like this: <xsl:template match="niku:Records"> <xsl:for-each-group select="niku:Record" group-by="concat(@fiscalyear,@gl)"> <xsl:value-of select=" (@fiscalyear, @gl), for $i in 1 to 12 return (current-group()[@month=$i]/@cost, 0)[1]" separator="," /> </xsl:for-each-group> </xsl:template> It's almost as with Perl: there's more than one way to do it ;) Cheers, -- Abel Braaksma http://www.nuntia.nl
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|