Subject: RE: [xsl] Sorting Question: Muenchian method? Substring in Key? From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx> Date: Fri, 27 Sep 2002 22:04:38 +0100 |
There are two main approaches to grouping: (a) the "not(x = preceding::x)" method (b) the Muenchian method Method (a) works only where the grouping key is the string-value of a node; this is because it relies on the special properties of "=" when comparing two node-sets. Where the grouping key is anything else (e.g. the first character of the string value), you need to use Muenchian grouping. Michael Kay Software AG home: Michael.H.Kay@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Thomas_M > Sent: 27 September 2002 16:27 > To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx' > Subject: [xsl] Sorting Question: Muenchian method? Substring in Key? > > > Hello. This is my first XSLT project. I'm having trouble with > grouping sorted items (seems to be a common theme). I have a > XML file like this > (simplified): > > <topics> > <topic>Anteater</topic> > <topic>Aardvark</topic> > <topic>Beetle, Smaller European Elm Bark</topic> > <topic>Beetle, American Burying</topic> > <topic>Chimpanzee</topic> > </topics> > > I would like the output to be sorted and grouped, with each > group getting a > heading: > > A > Aardvark > Anteater > > B > Beetle, American Burying > Beetle, Smaller European Elm Bark > > C > Chimpanzee > > The corresponding part of my XSL is below. > > <xsl:template match="topics"> > <table border="1"> > <xsl:for-each select="topic"> > <xsl:sort select="."/> > <xsl:variable name="previndex" select="position()-1"/> > <xsl:if test="not(substring(.,1,1) > = substring(/topics/topic[$previndex],1,1))"> > <tr><th><xsl:value-of > select="substring(.,1,1)"/></th></tr> > > </xsl:if> > <tr> > <td><xsl:value-of select="."/></td> > </tr> > </xsl:for-each> > </table> > </xsl:template> > > As you can see, I'm comparing an element in a sorted node-set > with a document-order node-set. This works only if the XML is > pre-sorted. Is there a way to create the sorted node-set > first, so that I can both traverse and use it in my test? > > I have seen a few examples of the Muenchian method, and it > would seem this is another (perhaps better) way solve my > problem. However, I've tried several times to implement it > and can't seem to get it right (can you use a substring in a key?) > > Thanks for any insight, > > - Mark. > > -- > Mark Thomas |_| > Internet Systems Architect -+- > User Technology Associates, Inc. | > Thomas_M@xxxxxxx /-\ > > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Sorting Question: Muenchi, Robert Koberg | Thread | RE: [xsl] Sorting Question: Muenchi, Thomas_M |
RE: [xsl] Problems rendering nbsp e, John Aschenbrenner | Date | RE: [xsl] Problems rendering nbsp e, John Aschenbrenner |
Month |