|
Subject: RE: [xsl] Flat to Structured: Handling List Items with Subordinate Paragraphs From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Tue, 26 May 2009 22:20:52 +0100 |
> For example, I could have an ordered list followed by an
> unordered list, which would give a group like:
>
> <p type="li" container="ol" level="1">
> <p type="p" container="li" level="2">
> <p type="li" container="ol" level="1">
> <p type="p" container="li" level="2">
> <p type="li" container="ul" level="1">
> <p type="p" container="li" level="2">
>
> Where the result should be:
>
> <ol>
> <li>
> <p>
> </li>
> <li>
> <p>
> <li>
> </ol>
> <ul>
> <li>
> <p>
> <li>
> </ul>
>
> I don't see a way to get that result using
> group-starting-with on the group members.
>
I haven't followed the thread closely, but I would tackle the above by first
using group-starting with to build the levels
<xsl:for-each-group select="*" group-starting-with="*[@level='1']">
applied recursively if necessary for each level, giving
<p type="li" container="ol" level="1">
<p type="p" container="li" level="2">
</p>
<p type="li" container="ol" level="1">
<p type="p" container="li" level="2">
</p>
<p type="li" container="ul" level="1">
<p type="p" container="li" level="2">
</p>
and then apply group-adjacent to the level 1's (and perhaps recursively to
each level?):
<xsl:for-each-group select="*" group-adjacent="@container">
<xsl:element name="{current-grouping-key()}">
<xsl:copy-of select="current-group()"/>
</
</
to give your required structure, with a bit of trivial tweaking needed to
change <p type="li"> to <li>.
Regards,
Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Flat to Structured: Handl, Emmanuel Begue | Thread | Re: [xsl] Flat to Structured: Handl, Eliot Kimber |
| Re: [xsl] Flat to Structured: Handl, Robert Koberg | Date | RE: [xsl] Flat to Structured: Handl, Michael Kay |
| Month |