Subject: RE: Grouping and Unique Lists From: "Michael J. Dyer" <michael.dyer@xxxxxxxxxx> Date: Tue, 28 Sep 1999 16:29:53 -0400 |
Bill, You're absolutely right - IE doesn't support the "preceding-sibling" construct and the XSL script won't work. However, I was able to do a workaround using JavaScript. There are three JavaScript functions - SetCurrentGroup, GetCurrentGroup and IsNewGroup. I'm not really using GetCurrentGroup , but it's there just to be complete. You'll node that when I call the IsNewGroup and SetCurrentGroup, I pass 'this' along with a text string that represents the node I want (relative to this). Hope this helps... Regards, Michael <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:for-each select="/ITEMLIST/ITEM"> <xsl:if expr="IsNewGroup(this, 'CATEGORY')"> <xsl:eval> SetCurrentGroup(this, 'CATEGORY') </xsl:eval> <xsl:value-of select="CATEGORY"/> </xsl:if> <xsl:value-of select="NUMBER"/> <xsl:value-of select="DESCRIPTION"/> </xsl:for-each> </xsl:template> <xsl:script> cCurrentGroup = "_empty_" ; function SetCurrentGroup(cThis, cChar) { cValue = cThis.selectSingleNode(cChar).text ; cCurrentGroup = cValue ; return "" ; } function IsNewGroup(cThis, cChar) { cValue = cThis.selectSingleNode(cChar).text ; if (cValue == cCurrentGroup) cReturn = false ; else cReturn = true ; return cReturn ; } function GetCurrentGroup() { return cCurrentGroup ; } </xsl:script> </xsl:stylesheet> -----Original Message----- From: owner-xsl-list@xxxxxxxxxxxxxxxx [mailto:owner-xsl-list@xxxxxxxxxxxxxxxx]On Behalf Of Bill Martschenko Sent: Tuesday, September 28, 1999 3:20 PM To: xsl-list@xxxxxxxxxxxxxxxx Subject: RE: Grouping and Unique Lists Excellent. I'd like to add that IE5 can't handle it. IE5 doesn't support all of the XSLT constructs. "preceding-sibling" is one of them. I have an IE5 solution in the works that uses xsl:script to get past some of the limitations. The basic ideas are the same: start with a sorted list and then as you process them in order check your predecessor to see if you are first one in a group. More later--if I succeed :-)--for any IE5 audience... Bill --- "Sargeant, Richard (GEIS)" <Richard.Sargeant@xxxxxxxxxxx> wrote: > Hi, > > I have not tried this with IE5 but this works for > me and produces exactly > the output you specified... FYI I created and > previewed this using the > Stylus beta editor and then tested it with Oracle's > XMLparser. > > > > <xsl:stylesheet > xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"> > > <xsl:template > match="*|/"><xsl:apply-templates/></xsl:template> > > <xsl:template match="text()|@*"><xsl:value-of > select="."/></xsl:template> > > <xsl:template match="ITEMLIST"> > <xsl:apply-templates select="ITEM"/> > </xsl:template> > > <xsl:template match="ITEM"> > <xsl:if test = > "not(CATEGORY=preceding-sibling::ITEM[position()=1]/CATEGORY)"> > <xsl:value-of > select="CATEGORY"/><br/> > </xsl:if> > <xsl:value-of select="NUMBER"/> > <xsl:text> </xsl:text> > <xsl:value-of select="DESCRIPTION"/><br/> > </xsl:template> > > </xsl:stylesheet> > > > regards > Richard Sargeant > > > -----Original Message----- > From: Michael J. Dyer > [mailto:michael.dyer@xxxxxxxxxx] > Sent: Monday, September 27, 1999 19:04 > To: xsl-list@xxxxxxxxxxxxxxxx > Subject: Grouping and Unique Lists > > > I've searched the archives and found a few posts in > this area, but nothing > that seems to directly address the problem. I'm > working with the Microsoft > IE5 XMLDom. Given the following XML: > <?XML version='1.0'?> > <ITEMLIST> > <ITEM> > <CATEGORY>Category A</CATEGORY> > <NUMBER>00001</NUMBER> > <DESCRIPTION>Item 1</DESCRIPTION> > </ITEM> > <ITEM> > <CATEGORY>Category B</CATEGORY> > <NUMBER>00002</NUMBER> > <DESCRIPTION>Item 2</DESCRIPTION> > </ITEM> > <ITEM> > <CATEGORY>Category B</CATEGORY> > <NUMBER>00003</NUMBER> > <DESCRIPTION>Item 3</DESCRIPTION> > </ITEM> > <ITEM> > <CATEGORY>Category C</CATEGORY> > <NUMBER>00004</NUMBER> > <DESCRIPTION>Item 4</DESCRIPTION> > </ITEM> > </ITEMLIST> > 1. Using XSL, convert to the following output > (without using the actual > category name as part of the XSL) > Category A > 00001 Item 1 > Category B > 00002 Item 2 > 00003 Item 3 > Category C > 00004 Item 4 > > > XSL-List info and archive: > http://www.mulberrytech.com/xsl/xsl-list > > > XSL-List info and archive: > http://www.mulberrytech.com/xsl/xsl-list > __________________________________________________ Do You Yahoo!? Bid and sell for free at http://auctions.yahoo.com 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: Grouping and Unique Lists, Bill Martschenko | Thread | RE: Grouping and Unique Lists, Bill Martschenko |
RE: Grouping and Unique Lists, Bill Martschenko | Date | File Entity Behaviour, Betty Harvey |
Month |