xsl-list
[Top] [All Lists]

XSLT Grouping/Filtering issue with preceding/following axes

2005-08-05 07:51:16
Hi, 

I am very new to XSLT and need some enlightenment per the following
issue grouping filtering issue.

Any information (I'm sure this is FAQ'd somewhere) would be greatly appreciated.

Thank you.

Description: 

I am having the following problem when grouping/filtering as such in
that some nodes are getting filtered out/grouped  correctly while others do not
based on position when using either preceding or following.

XSL:

...
 <xsl:template match="/">

   <!-- 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>

    <!-- This works but I'm sure is not the best way to do this... -->
   <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) and
           position()=1) or (not(AttributeName=following::*/AttributeName))]"/>
    </xsl:element>
 </xsl:template>

</xsl:stylesheet>


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>CCSW</AttributeName>
                       <OID>daa575325f8675a6</OID>
                       <Id>AU  100-8</Id>
                       <AttributeValue>YES</AttributeValue>
               </Record>
</Results>

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--