Subject: Re: [xsl] Working around immutable variables|
From: "G. Ken Holman g.ken.holman@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 2 Mar 2018 21:12:48 -0000
Read up on "grouping". That is the declarative way to do what you want to do, rather than the imperative approaches you've described as considering. With grouping you don't need any mutable variables.
For many imperative programmers, wrapping one's head around the declarative style can be challenging, but it sure is rewarding when finally understood!
... and there is an entire section on the many kinds of grouping available when using XSLT.
We have a for-each loop that constructs a table. The first column is a region that would normally look like the following we would like to show the firstt region name only to avoid repetition.
US US US US Europe Europe Europe Asia Asia
My non-xsl mind wants to use a mutable variable: * initialize a variable $current_region to bb * loop through each row * If current rowbs region column COLUMN[@name=bregionb] does not equal $current_region then: * select the region so it shows in the table * reassign $current_region to the string value of the current rowbs region column
Perhaps comparing the current category to the preceding-sibling?
Perhaps a loop on select=bdistinct_values to find region names, enclosing aanother loop that goes through each distinct regionbs rows? If position()=1 worked in that context perhaps this would work?
Webre aware of the saxon namespace that allows for the mutable variable cheat, but would like to avoid this.
I would greatly appreciate your recommendations.
Thank you, David Jacopille Boston
-- Contact info, blog, articles, etc. http://www.CraneSoftwrights.com/s/ | Check our site for free XML, XSLT, XSL-FO and UBL developer resources | Streaming hands-on XSLT/XPath 2 training class @ US$45 (5 hours free) |