Multiple Grouping in List
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
__________________
Thanks,
Rocxy.
|