|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
Hi,
I have a list of items which are in categories and some in subcategories too. In the XML these are contained in the XML of each item (see below). In the XSL file what do I need to do to get the categories and subcategories to be displayed as headings? Obvious I want only one heading for each category/subcategory. <ITEM_DETAILS> <ID>128</ID> <DESC>30mm x 2mm</DESC> <CAT_DESC>Washers</CAT_DESC> <CAB_PAGE> <SUB_CATEGORIES>Brass<SUB_CATEGORIES/> </CAB_PAGE> </ITEM_DETAILS> <ITEM_DETAILS> <ID>131<ID> <DESC>35mm x 2mm</DESC> <CAT_DESC>Washers</CAT_DESC> <CAB_PAGE> <SUB_CATEGORIES>Brass<SUB_CATEGORIES/> </CAB_PAGE> </ITEM_DETAILS> <ITEM_DETAILS> <ID>131<ID> <DESC>20mm</DESC> <CAT_DESC>Washers</CAT_DESC> <CAB_PAGE> <SUB_CATEGORIES>Steel<SUB_CATEGORIES/> </CAB_PAGE> </ITEM_DETAILS> <ITEM_DETAILS> <ID>131<ID> <DESC>65mm</DESC> <CAT_DESC>Nuts</CAT_DESC> <CAB_PAGE> <SUB_CATEGORIES>Brass<SUB_CATEGORIES/> </CAB_PAGE> </ITEM_DETAILS> |
|
#2
|
|||
|
|||
|
What you are trying to do is probably best handled using the
Muenchian Method. See Jeni Tennison's explanation at http://www.jenitennison.com/xslt/gr.../muenchian.html Here is a rough example of this technique based on your requirements. XML source: <FPM> <ITEM_DETAILS> <ID>128</ID> <DESC>30mm x 2mm</DESC> <CAT_DESC>Washers</CAT_DESC> <CAB_PAGE> <SUB_CATEGORIES>Brass</SUB_CATEGORIES> </CAB_PAGE> </ITEM_DETAILS> <ITEM_DETAILS> <ID>131</ID> <DESC>35mm x 2mm</DESC> <CAT_DESC>Washers</CAT_DESC> <CAB_PAGE> <SUB_CATEGORIES>Brass</SUB_CATEGORIES> </CAB_PAGE> </ITEM_DETAILS> <ITEM_DETAILS> <ID>132</ID> <DESC>20mm</DESC> <CAT_DESC>Washers</CAT_DESC> <CAB_PAGE> <SUB_CATEGORIES>Steel</SUB_CATEGORIES> </CAB_PAGE> </ITEM_DETAILS> <ITEM_DETAILS> <ID>133</ID> <DESC>65mm</DESC> <CAT_DESC>Nuts</CAT_DESC> <CAB_PAGE> <SUB_CATEGORIES>Brass</SUB_CATEGORIES> </CAB_PAGE> </ITEM_DETAILS> </FPM> XSL source: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl utput method="html" indent="yes" standalone="yes"omit-xml-declaration="no" encoding="UTF-8"/> <xsl:key name="items" match="ITEM_DETAILS" use="concat(CAT_DESC, CAB_PAGE/SUB_CATEGORIES)" /> <xsl:template match="FPM"> <html> <body> <xsl:for-each select="ITEM_DETAILS[count(. | key('items', concat(CAT_DESC,CAB_PAGE/SUB_CATEGORIES))[1]) = 1]"> <xsl:sort select="CAT_DESC" /> <h2><xsl:value-of select="CAT_DESC" /> - <xsl:value-of select="CAB_PAGE/SUB_CATEGORIES"/></h2> <xsl:for-each select="key('items', concat(CAT_DESC,CAB_PAGE/SUB_CATEGORIES))"> <xsl:sort select="CAB_PAGE/SUB_CATEGORIES/ID" /> <p><xsl:value-of select="ID"/>: <xsl:value-of select="DESC"/></p> </xsl:for-each> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet> - Finnbarr |
![]() |
| Viewing: Dev Shed Forums > Programming Languages - More > XML Programming > Category Headings in XSL |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|