[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Creating new, distinct groups of ranges from an a
An example is rarely a good way of defining an algorithm, and I do have problems understanding the transformation of the ranges. There is, for instance the issue of the triple overlap 101-102 (ranges 1, 2 and 3) - it hasn't been mentioned explicitly. It seems that a list of ranges (as in the 5th range element) is merely an alternative to having two or more tange elements. This is how I would formulate it: The set of input ranges numbered 1,2,...n defines n lower bounds and n upper bounds. Output ranges are identified by non-empty, different sets of input range numbers. This suggests an abstract algorithm which creates a map where keys are numbers in ranges and values are range number sets. In this map, find entry sets with identical values and output a range given by its minimum and maximum key values for each of them. Not sure how to code this in XSLT 2.0, though. :-\ -W On 18 November 2014 06:07, Michael Friedman sumarimike@xxxxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > Greetings, > > I'm trying to use XSLT 2.0 to create a new set of grouped ranges based on > the overlap of an aggregation of a set of non-contiguous individual ranges. > Example: > > Given a range of numbers as an individual set: > 1. <range>150-202</range> > 2. <range>201-225</range> > 3. <range>201-204</range> > 4. <range>205-234</range> > 5. <range>226-234, 250-260</range> > > I'm trying to produce a new grouping based on the way the groups overlap: > 150-200 (this is where <range> 1 starts and overlaps to 2 & 3) > 201-202 (this is where 1 & 2 overlap, and group 1 ends) > 203-204 (this is where 2 & 3 overlap and 3 ends) > 205-225 (this is where 4 starts and begins to overlap with 5) > 226-234 (this is where 4 & 5 overlap and end for the first part of 5) > 250-260 (this is where the second range in 5 exists) > > The start and end point of the individual source ranges form the > boundaries. > > I expect to end up with a string or variable structure like: > <finalrange> > <range>150-200</range> > <range>201-202</range> > etc > </finalrange> > or: > <range start="150" end="200"/> > <range start="201" end="202"/> > etc > > Ultimately I have to format some content in XSLFO based on the XML's > participation in the "new" given range grouping. If you know aircraft > effectivity, this is what I am trying to group. > > I've been using <xsl:sequence> to find all the numbers of a single range, > so I can do compares against individual numbers in the entire range, if > necessary. But, it seems like it may be easier to just work with the > boundaries: the start and end points and see if a value falls within it, > somehow, rather than iterating repetitively through enumerations of > sequences. > > I've been searching the archives for a while and have found some evocative > possibilities from Dimitre Novatchev and Michael Kay, but I can't quite > find a way to work with the overlapping. I'm continuing to study their > ranging/grouping examples, but help would be appreciated! > > Thanks, > Michael Friedman > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <-list/528976> (by > email <>)
|
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
|