|
Subject:
|
Multiple Grouping in List
|
|
Posted By:
|
ROCXY
|
Post Date:
|
1/7/2006 4:16:47 AM
|
I have an XML. -------------- <artbody> <sec> <subsec> <list>1. First level nunmbered list</list> <list>2. First level nunmbered list</list> <sublist>(a) Second level nunmbered list</sublist> <sublist>(b) Second level nunmbered list</sublist> <list>3. First level nunmbered list</list> <sublist>I) Second level nunmbered list</sublist> <sub_sublist>A. Third level nunmbered list</sub_sublist> <sub_sublist>B. Third level nunmbered list</sub_sublist> <sublist>II) Second level nunmbered list</sublist> <sublist>III) Seconcd level nunmbered list</sublist> <list>4. First level nunmbered list</list> <list>5. First level nunmbered list</list> <list>6. First level nunmbered list</list> <sublist>I) Second level nunmbered list</sublist> <sublist>II) Second level nunmbered list</sublist> <list>7. First level nunmbered list</list> <sublist>I) Second level nunmbered list</sublist> <sub_sublist>A. Third level nunmbered list</sub_sublist> <sub_sublist>B. Third level nunmbered list</sub_sublist> <sublist>I) Second level nunmbered list</sublist> <sublist>II) Second level nunmbered list</sublist> <list>8. First level nunmbered list</list>
</subsec> </sec> </artbody>
Used XSL. --------- <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*" /> </xsl:copy> </xsl:template>
<xsl:template match="list | sublist | sub_sublist | sub_sub_sublist"> <xsl:if test="not(name(preceding-sibling::*[1]) = 'list')"> <xsl:if test="not(name(preceding-sibling::*[1]) = 'sublist')"> <xsl:if test="not(name(preceding-sibling::*[1]) = 'sub_sublist')"> <xsl:if test="not(name(preceding-sibling::*[1]) = 'sub_sub_sublist')"> <done> <xsl:copy-of select=".| following-sibling::list | following-sibling::sublist | following-sibling::sub_sublist | following-sibling::sub_sub_sublist"/> </done> </xsl:if> </xsl:if> </xsl:if> </xsl:if> </xsl:template> </xsl:stylesheet>
Observed out put ----------------- .... <subsec> <done> <list>1. First level nunmbered list</list> <list>2. First level nunmbered list</list> <sublist>(a) Second level nunmbered list</sublist> <sublist>(b) Second level nunmbered list</sublist> <list>3. First level nunmbered list</list> <sublist>I) Second level nunmbered list</sublist> <sub_sublist>A. Third level nunmbered list</sub_sublist> <sub_sublist>B. Third level nunmbered list</sub_sublist> <sublist>II) Second level nunmbered list</sublist> <sublist>III) Seconcd level nunmbered list</sublist> <list>4. First level nunmbered list</list> <list>5. First level nunmbered list</list> <list>6. First level nunmbered list</list> <sublist>I) Second level nunmbered list</sublist> <sublist>II) Second level nunmbered list</sublist> <list>7. First level nunmbered list</list> <sublist>I) Second level nunmbered list</sublist> <sub_sublist>A. Third level nunmbered list</sub_sublist> <sub_sublist>B. Third level nunmbered list</sub_sublist> <sublist>I) Second level nunmbered list</sublist> <sublist>II) Second level nunmbered list</sublist> <list>8. First level nunmbered list</list> </done>
As you see the above XSL transforms all the lists grouping under <done>, but I would like to group each and every sublist under a element. I tried uising 'following-sibilings' and 'mode' method but it results repetations and I was expecting as follows.
......... <subsec> <done> <list>1. First level nunmbered list</list> <list>2. First level nunmbered list</list>
<root_sublist> <sublist>(a) Second level nunmbered list</sublist> <sublist>(b) Second level nunmbered list</sublist> </root_sublist>
<list>3. First level nunmbered list</list>
<root_sublist> <sublist>I) Second level nunmbered list</sublist>
<root_sub_sublist> <sub_sublist>A. Third level nunmbered list</sub_sublist> <sub_sublist>B. Third level nunmbered list</sub_sublist> </root_sub_sublist>
<sublist>II) Second level nunmbered list</sublist> <sublist>III) Seconcd level nunmbered list</sublist> </root_sublist>
<list>4. First level nunmbered list</list> <list>5. First level nunmbered list</list> <list>6. First level nunmbered list</list>
<root_sublist> <sublist>I) Second level nunmbered list</sublist> <sublist>II) Second level nunmbered list</sublist> </root_sublist> <list>7. First level nunmbered list</list> | | | | | </done> .......
I would greatly appreciate any help provided.
Thanks & Regards, - ROCXY
|
|