Subject: Re: [xsl] Moving (promoting) XML elements through XSL From: David Carlisle <davidc@xxxxxxxxx> Date: Thu, 29 Jun 2006 23:35:53 +0100 |
> 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. You shouldn't get any output at all. $ saxon topic.xml topic.xsl Error at xsl:copy on line 17 of file:/c:/Temp/topic.xsl: Cannot write an attribute when there is no open start tag Transformation failed: Run-time errors were reported As the error message says you need to do attributes first, so apply templates to @* then make your index then do other stuff: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output indent="yes"/> <xsl:template match="/topic"> <xsl:copy> <xsl:apply-templates select="@*"/> <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> $ saxon topic.xml topic.xsl <?xml version="1.0" encoding="utf-8"?> <topic id="i267011"> <prolog> <metadata> <keywords> <indexterm>Hardware Requirements</indexterm> <indexterm>Software Requirements</indexterm> </keywords> </metadata> </prolog> <title> Software Requirements </title> <body> .. </body> </topic>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Moving (promoting) XML el, Mark Peters | Thread | Re: [xsl] Moving (promoting) XML el, Mark Peters |
Re: [xsl] Moving (promoting) XML el, Mark Peters | Date | Re: [xsl] [XSLT2] Some common, gene, David Carlisle |
Month |