Re: [xsl] Moving (promoting) XML elements through XSL

Subject: Re: [xsl] Moving (promoting) XML elements through XSL
From: "Mark Peters" <flickrmeister@xxxxxxxxx>
Date: Thu, 29 Jun 2006 17:24:04 -0400
Thanks for your input, David!  I think I made your suggested changes
correctly, but my output hasn't changed. The indexterm element still
doesn't appear in my output XML doc.

My updated XSL stylesheet is as follows:

<xsl:stylesheet xmlns:xsl=""; version="1.0"> <xsl:output indent="yes"/> <xsl:template match="/topic"> <xsl:copy> <prolog> <metadata> <keywords> <xsl:copy-of select="title/indexterm"/> </keywords> </metadata> </prolog> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="indexterm"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>

Regards, Mark

On 6/29/06, David Carlisle <davidc@xxxxxxxxx> wrote:

you have two templates matching <xsl:template match="@*|node()"> <xsl:template match="@*|node()"> which is an errror (even though they are the same template) a system may ignore the first or it may stop and reject the stylesheet.

<xsl:copy-of select="/title/indexterm"/> This copies nothing, you meant <xsl:copy-of select="title/indexterm"/> ie the indexterm grandchild of the current node (topic). /title would select the title child element of teh root but there is no such element, the element of / is topic.

> (I haven't figured gotten as far as wrapping
> the indexterm elements yet):

that's easy
           <xsl:copy-of select="title/indexterm"/>



Mark Peters
Senior Technical Writer
Saba Software

Current Thread