Altova Mailing List Archives>Archive Index >comp.text.xml Archive Home >Recent entries [Thread Prev] >Thread Next - Re: Filter a Muenchian Group Filter a Muenchian GroupTo: NULL Date: 12/6/2006 8:27:00 AM Hello, I am trying to filter a Muenchian grouping I have created. I think I am fairly close, but I am not quite sure where to apply my filter; its been some time since I did any work with XSLT. An example of my XML; <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="Structure.xsl" type="text/xsl"?> <dataroot xmlns:od="urn:schemas-microsoft-com:officedata"> <CostCentre> <ServiceOrder>1</ServiceOrder> <Service>Directorate Management Team</Service> <ServiceDivisionOrder>10</ServiceDivisionOrder> <ServiceDivisionName>DMT</ServiceDivisionName> <SectionOrder>A</SectionOrder> <Section>Service Management and Development</Section> <CostCentreID>6000</CostCentreID> </CostCentre> <CostCentre> <ServiceOrder>2</ServiceOrder> <Service>Commissioning and Partnership Services</Service> <ServiceDivisionOrder>20</ServiceDivisionOrder> <ServiceDivisionName>Commissioning and Partnership Services</ServiceDivisionName> <SectionOrder>A</SectionOrder> <Section>Commissioning and Partnerships</Section> <CostCentreID>600N</CostCentreID> </CostCentre> There are several cost centres in each section, several sections in each service division and several service divisions in each service. I would like to group by service, service division and then section. So far I have managed to get the following XSL; <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="AllServices" match="CostCentre" use="Service"/> <xsl:key name="AllServiceDivisions" match="CostCentre" use="concat(Service ';' ServiceDivisionName)"/> <xsl:template match="/"> <html> <body> <ol> <xsl:for-each select="//CostCentre[generate-id(.)=generate-id(key('AllServices',Service))]"> <xsl:sort select="ServiceOrder" data-type="number" /> <li><xsl:value-of select="Service" /></li> <xsl:variable name="currentService"> <xsl:value-of select="Service"/> </xsl:variable> <ul> <xsl:for-each select="//CostCentre[generate-id(.)=generate-id(key('AllServiceDivisions',concat(Service ';' ServiceDivisionName)))] "> <xsl:sort select="ServiceDivisionOrder" data-type="number" /> <li><xsl:value-of select="ServiceDivisionName" /></li> </xsl:for-each> </ul> </xsl:for-each> </ol> </body> </html> </xsl:template> </xsl:stylesheet> I *think* I have made the variable correctly, but am I totally lost at where to apply the filter (using $currentService). Currently, as you can imagine, I get all service divisions in each service, rather than just the service divisions for that service. I have tried several syntaxes and several locations but with no such luck. Once I get this right, I believe I can crack the rest. Can anyone shed any light on where and how I should apply the filter??? Thanks. | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
