[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Creating an array
[Alan Gardner] > > I'm trying to create the ability to select nodes at random > (easy enough), > however I'm getting duplicates. I've tried to create a string > (an array if > you will) of numbers that I generated that I can check each > time I loop > through the nodes, but if it is possible, it's outside of my > current xsl > understanding. > > Is it possible to build a delimited string/array? Or does anyone have > suggestions on how to eliminate duplicates while generating > random numbers > in the first place? > Well, you cannot build up a global variable (or any variable) as you go since they cannot be changed after creation. So you would have to use some kind of recursion and pass the previously-selected nodes in a parameter. At some point you would come up against the limits on recursion. Leaving aside recursion limits, for each node you randomly select you could add the value of its generate-id() to a space-separated list of previous generate-id() values. You would use contains() to see if you had already selected a node. If you know you will only randomly select a certain maximum number of nodes, then you could create a list of random numbers in that range outside of xslt and put them into a lookup element in the stylesheet. I used this method once - I had to dither the position of some (x,y) points that would have been on top of each other otherwise (for an svg output), but I did not have to bother about duplicates. If you go beyond xslt 1.0, you may be able to build up your list in a variable and then convert it to a nodeset (I say "may" because whether it will work depends on the size of the nodeset and the processor - I have hit strange limits a few times). This could give you more flexibility. I imagine that Mike Kay or Jeni will tell us how xslt2 will make it easier. Cheers, Tom P XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
|