[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: xsl grouping problem
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.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|