Subject: Re: [xsl] Flat to Structured: Handling List Items with Subordinate Paragraphs From: Eliot Kimber <ekimber@xxxxxxxxxxxx> Date: Tue, 26 May 2009 15:31:21 -0500 |
On 5/26/09 3:04 PM, "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> wrote: >> Can anyone point me in the right direction? > > Consider the solution below. I'm making assumptions like a container > is defined by adjacent elements with @container, and that the > container type is homogenous (so I only need to look at the first), > and that list items are always of type 'li'. It gives what you are > asking for, but you may need to modify it based on a more precise > definition of containers. Hmmm--took me a minute to see the boolean(@container) in this line: <xsl:for-each-group select="*" group-adjacent="boolean(@container)"> So that has the effect of creating a group for each continguous sequence of contained things, which is certainly a characteristic I can impose on my data (I control both the set of named styles and how they map to the annotations added the <p> elements in the data being processed). Given that, I think I should be able to process the group of contained things with recursive for-each-groups. Thanks, E. > I hope this helps. > > . . . . . . . . . . Ken > > T:\ftemp>type eliot.xml > <doc> > <p type="para" level="1">Para 1</p> > <p container="ol" type="li" level="1">ol item 1</p> > <p container="li" type="para" level="2">Para w/in li</p> > <p container="ol" type="li" level="1">ol item 2</p> > <p container="li" type="para" level="2">Para w/in li</p> > <p type="para" level="1">Para 2</p> > </doc> > T:\ftemp>xslt2 eliot.xml eliot.xsl > <?xml version="1.0" encoding="UTF-8"?> > <para>Para 1</para> > <ol> > <li>ol item 1<para>Para w/in li</para> > </li> > <li>ol item 2<para>Para w/in li</para> > </li> > </ol> > <para>Para 2</para> > T:\ftemp>type eliot.xsl > <?xml version="1.0" encoding="US-ASCII"?> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="2.0"> > > <xsl:output indent="yes"/> > > <xsl:template match="doc"> > <!--determine containers by the members being adjacent--> > <xsl:for-each-group select="*" group-adjacent="boolean(@container)"> > <xsl:choose> > <xsl:when test="@container"> > <!--at a container of a particular type--> > <!--create the necessary kind of container--> > <xsl:element name="{@container}"> > <!--populate the container--> > <xsl:for-each-group select="current-group()" > group-starting-with="*[@type='li']"> > <li> > <xsl:apply-templates select="node()"/> > <xsl:apply-templates select="current-group()[position()>1]"/> > </li> > </xsl:for-each-group> > </xsl:element> > </xsl:when> > <xsl:otherwise> > <!--not at a container; just constitute the elements--> > <xsl:apply-templates select="current-group()"/> > </xsl:otherwise> > </xsl:choose> > </xsl:for-each-group> > </xsl:template> > > <xsl:template match="*"> > <xsl:element name="{@type}"> > <xsl:apply-templates/> > </xsl:element> > </xsl:template> > > </xsl:stylesheet> > > T:\ftemp> > > -- > XSLT/XSL-FO/XQuery hands-on training - Los Angeles, USA 2009-06-08 > Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ > Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video > Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18 > Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18 > G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx > Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc > Legal business disclaimers: http://www.CraneSoftwrights.com/legal > ---- Eliot Kimber | Senior Solutions Architect | Really Strategies, Inc. email: ekimber@xxxxxxxxxxxx <mailto:ekimber@xxxxxxxxxxxx> office: 610.631.6770 | cell: 512.554.9368 2570 Boulevard of the Generals | Suite 213 | Audubon, PA 19403 www.reallysi.com <http://www.reallysi.com> | http://blog.reallysi.com <http://blog.reallysi.com> | www.rsuitecms.com <http://www.rsuitecms.com>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Flat to Structured: Handl, G. Ken Holman | Thread | Re: [xsl] Flat to Structured: Handl, G. Ken Holman |
Re: [xsl] Flat to Structured: Handl, G. Ken Holman | Date | Re: [xsl] Flat to Structured: Handl, G. Ken Holman |
Month |