Subject: Re: [xsl] xsl grouping problem From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Sat, 10 Sep 2005 07:53:09 +1000 |
An XSLT 1.0 solution: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:key name="kLLast" match="line_last | line" use="generate-id(preceding-sibling::line_first[1])"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="line_first"> <stanza> <xsl:copy-of select= ".|key('kLLast',generate-id())"/> </stanza> </xsl:template> <xsl:template match="line|line_last"/> </xsl:stylesheet> Cheers, Dimitre Novatchev On 9/9/05, Jeff Hatch <hatchjk@xxxxxxxxxxxxx> wrote: > I've been chewing on this for some time now and would love some suggestions. > Coming from a document-centric environment, I am given xml that looks like this: > > <chapter> > <para>This is a paragraph in the chapter</para> > <line_first>This is first line of a stanza of poetry</line_first> > <line>This is line of poetry</line> > <line>This is line of poetry</line> > <line>This is line of poetry</line> > <line_last>This is last line of a stanza of poetry</line_last> > <para>This is a paragraph in the chapter</para> > </chapter> > > The challenge is to perform copy and grouping operations to a) copy all existing > structure as is, using copy-of, which is not a problem. However, to the above > xml I wish to apply additional structure to create a poem stanza: > > <chapter> > <para>This is a paragraph in the chapter</para> > <stanza> > <line_first>This is first line of poetry</line_first> > <line>This is line of poetry</line> > <line>This is line of poetry</line> > <line>This is line of poetry</line> > <line_last>This is last line of poetry</line_last> > </stanza> > <para>This is a paragraph in the chapter</para> > </chapter> > > My difficulty stems from being dealt two dissimilar element names at the > beginning and end of the block of xml that needs to be grouped. My attempts to > do this with group-starting-with and group-ending-with have failed. Performing > group-adjacent on the <line> elements miss the first_ and last_line elements. > Any thoughts? > > ----------------------------------------------------------------------------- - > This message may contain confidential information, and is > intended only for the use of the individual(s) to whom it > is addressed. > ----------------------------------------------------------------------------- - > > -- Cheers, Dimitre Novatchev --------------------------------------- Harry did not ask how Dumbledore knew; ...but Harry had long since learned that bangs and smoke were more often the marks of ineptitude than expertise.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] xsl grouping problem, Mukul Gandhi | Thread | RE: [xsl] xsl grouping problem, Michael Kay |
RE: [xsl] Apply-templates - how to , Mike Schinkel | Date | RE: [xsl] xsl grouping problem, Michael Kay |
Month |