Subject: Re: [xsl] XSLT Grouping/Filtering issue with preceding/following axes From: Jacquo Johnson <genxgeek@xxxxxxxxx> Date: Fri, 5 Aug 2005 15:03:47 -0600 |
Hi Joris, Thanks for pointing that out. However, after fixing typo for some reason the stylesheet is still not filtering/grouping correctly per the following (especially the last <CodeId/> in the input xml file).: Any idea as to what is going on here? Thanks! -- XSL: <xsl:template match="/"> <xsl:element name="Root"> <!-- Ok, this works for FRED as the group is filtered with no duplicates --> <xsl:variable name="uh" select="//Record[CodeId='FRED']"/> <xsl:element name="Copy"> <xsl:copy-of select="$uh"/> </xsl:element> <xsl:element name="Filter"> <xsl:copy-of select="$uh[not(AttributeName=preceding::*/AttributeName)]"/> </xsl:element> <!-- However, this does not work for the 30DAYPM as it is missing the LT CodeId group --> <xsl:variable name="uh2" select="//Record[CodeId='30DAYPM']"/> <xsl:element name="Copy"> <xsl:copy-of select="$uh2"/> </xsl:element> <xsl:element name="Filter"> <xsl:copy-of select="$uh2[not(AttributeName=preceding::*/AttributeName)]"/> </xsl:element> <!-- This works but I'm sure is not the best way to do this... --> <xsl:variable name="uh" select="//Record[CodeId='30DAYPM']"/> <xsl:element name="Copy"> <xsl:copy-of select="$uh"/> </xsl:element> <xsl:element name="Filter"> <xsl:copy-of select="$uh[(not(AttributeName=preceding::*/AttributeName) and position()=1) or (not(AttributeName=following::*/AttributeName))]"/> </xsl:element> </xsl:element> </xsl:template> XML: <Results> <Record> <CodeId>FRED</CodeId> <AttributeName>LT</AttributeName> <OID>647f802e5f8675a6</OID> <Id>AU 100-1</Id> <AttributeValue>YES</AttributeValue> </Record> <Record> <CodeId>FRED</CodeId> <AttributeName>CPQ</AttributeName> <OID>647f802e5f8675a6</OID> <Id>AU 100-2</Id> <AttributeValue>YES</AttributeValue> </Record> <Record> <CodeId>30DAYPM</CodeId> <AttributeName>LT</AttributeName> <OID>daa575325f8675a6</OID> <Id>AU 100-3</Id> <AttributeValue>YES</AttributeValue> </Record> <Record> <CodeId>30DAYPM</CodeId> <AttributeName>CSW</AttributeName> <OID>daa575325f8675a6</OID> <Id>AU 100-4</Id> <AttributeValue>YES</AttributeValue> </Record> <Record> <CodeId>FRED</CodeId> <AttributeName>LT</AttributeName> <OID>647f802e5f8675a6</OID> <Id>AU 100-5</Id> <AttributeValue>YES</AttributeValue> </Record> <Record> <CodeId>FRED</CodeId> <AttributeName>CPQ</AttributeName> <OID>647f802e5f8675a6</OID> <Id>AU 100-6</Id> <AttributeValue>YES</AttributeValue> </Record> <Record> <CodeId>30DAYPM</CodeId> <AttributeName>LT</AttributeName> <OID>daa575325f8675a6</OID> <Id>AU 100-7</Id> <AttributeValue>YES</AttributeValue> </Record> <Record> <CodeId>30DAYPM</CodeId> <AttributeName>CSW</AttributeName> <OID>daa575325f8675a6</OID> <Id>AU 100-8</Id> <AttributeValue>YES</AttributeValue> </Record> </Results> On 8/5/05, Joris Gillis <roac@xxxxxxxxxx> wrote: > Tempore 16:51:16, die 08/05/2005 AD, hinc in xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Jacquo Johnson <genxgeek@xxxxxxxxx>: > > > <!-- This doesn't work...group is not filtered correctly --> > > <xsl:variable name="uh" select="//Record[CodeId='FRED']"/> > > <xsl:element name="Copy"> > > <xsl:copy-of select="$uh"/> > > </xsl:element> > > <xsl:element name="Filter"> > > <xsl:copy-of select="$uh[(not(AttributeName=preceding::*/AttributeName)]"/> > > </xsl:element> > > There's a typo in the Xpath. It should be > $uh[not(AttributeName=preceding::*/AttributeName)] > > It more common to use the Muenchian grouping technique for solving problems like this. > > regards, > -- > Joris Gillis (http://users.telenet.be/root-jg/me.html) > +Vik^joom eimai lakkom g vik|kakom; - Jke|boukor
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XSLT Grouping/Filtering i, Joris Gillis | Thread | Re: [xsl] XSLT Grouping/Filtering i, Joris Gillis |
[xsl] XSL/XHTML IDE, Oleg Konovalov | Date | RE: [xsl] output encoding problem (, Michael Kay |
Month |