[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Creating new, distinct groups of ranges from an aggregation of individual ranges
Subject: Re: [xsl] Creating new, distinct groups of ranges from an aggregation of individual ranges From: "Heiko Niemann kontakt@xxxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 18 Nov 2014 18:03:20 -0000 |
Hi again, I just noticed two shortcomings in the solution I posted: 1) the attribute 'data-type' in the xsl:sort element needs to be set to 'number' 2) some cases are not covered e.g. if the input is <ranges> <range>100-300</range> <range>150-190</range> <range>200-280</range> </ranges> the output holds: <ranges> <range>100-149</range> <range>150-190</range> <range>200-280</range> <range>281-300</range> </ranges> so there is a gap (191-199). The output rather should be: <ranges> <range>100-149</range> <range>150-190</range> <range>191-199</range> <!-- gap --> <range>200-280</range> <range>281-300</range> </ranges> Michael could you verify that this would be the expected output. So I guess it's more tricky. Michael, could you please provide samples of possible inputs and expected results. Cheers, Heiko > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Creating new, distinct gr, Imsieke, Gerrit, le- | Thread | Re: [xsl] Creating new, distinct gr, Imsieke, Gerrit, le- |
Re: [xsl] Creating new, distinct gr, Imsieke, Gerrit, le- | Date | Re: [xsl] Creating new, distinct gr, Imsieke, Gerrit, le- |
Month |
Keywords