Subject: RE: [xsl] XSLT transformation using counters From: Bubba O'Reily <killswi7ch1@xxxxxxxx> Date: Wed, 27 Apr 2011 07:40:22 -0400 |
I want to export XML. There are other elements I also neeed to replace in the file. If I output method="text" then those disappear in the output. For example <a href="??">...</a> I'm getting alot closer but how do I decrement the counter when a heading appears outside of a </lev>. See example input, output & code below. Note the output on the following lines: <ParaStyle:hd4>Level 3 <ParaStyle:para>para text <ParaStyle:hd4>Level 2 <ParaStyle:para>para text <ParaStyle:hd4>Level 1 <ParaStyle:para>para text The <ParaStyle:hd?> is not correct. I need to decrement the counter so when a </lev> occurs the appropriate counter is used. Should be: <ParaStyle:hd3>Level 3 <ParaStyle:para>para text <ParaStyle:hd2>Level 2 <ParaStyle:para>para text <ParaStyle:hd1>Level 1 <ParaStyle:para>para text Input: ------ <lev> <heading>Level 1</heading> <para>para text</para> <heading>Level 1A</heading> <para>para text</para> <lev> <heading>Level 2</heading> <para>para text</para> <heading>Level 2A</heading> <para>para text</para> <heading>Level 2B</heading> <para>para text</para> <lev> <heading>Level 3</heading> <para>para text</para> <lev> <heading>Level 4</heading> <para>para text</para> <heading>Level 4A</heading> <para>para text</para> <heading>Level 4B</heading> <para>para text</para> </lev> <heading>Level 3</heading> <para>para text</para> </lev> <heading>Level 2</heading> <para>para text</para> </lev> <heading>Level 1</heading> <para>para text</para> </lev> Output Required: ---------------- <ParaStyle:lev> <ParaStyle:hd1>Level 1 <ParaStyle:para>para text <ParaStyle:hd1>Level 1A <ParaStyle:para>para text <ParaStyle:lev> <ParaStyle:hd2>Level 2 <ParaStyle:para>para text <ParaStyle:hd2>Level 2A <ParaStyle:para>para text <ParaStyle:hd2>Level 2B <ParaStyle:para>para text <ParaStyle:lev> <ParaStyle:hd3>Level 3 <ParaStyle:para>para text <ParaStyle:lev> <ParaStyle:hd4>Level 4 <ParaStyle:para>para text <ParaStyle:hd4>Level 4A <ParaStyle:para>para text <ParaStyle:hd4>Level 4B <ParaStyle:para>para text <ParaStyle:hd3>Level 3 <ParaStyle:para>para text <ParaStyle:hd2>Level 2 <ParaStyle:para>para text <ParaStyle:hd1>Level 1 <ParaStyle:para>para text Code: ----- <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="lev"> <xsl:text disable-output-escaping="yes"> <ParaStyle:lev></xsl:text> <xsl:apply-templates/> </xsl:template> <xsl:template match="heading"> <xsl:text disable-output-escaping="yes"> <ParaStyle:hd</xsl:text> <xsl:number level="any" count="lev"/> <xsl:text disable-output-escaping="yes">></xsl:text> <xsl:apply-templates/> </xsl:template> <xsl:template match="para"> <xsl:text disable-output-escaping="yes"> <ParaStyle:para></xsl:text> <xsl:apply-templates/> </xsl:template> > Date: Tue, 26 Apr 2011 18:38:43 +0100 > From: davidc@xxxxxxxxx > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] XSLT transformation using counters > > On 26/04/2011 17:16, Bubba O'Reily wrote: > > > > <PStyle:hd1> > > <PStyle:hd2> > > > > etc. > > > > your sample results are not well formed XML, is that because you are not > generating xml, in which case xsl:output method="text" is appropriate, > or is it just that you have over-truncated your examples, in which case > it's hard to suggest exactly what code you need without seeing a > complete (but small) result xml file. > > david
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XSLT - Converting image t, Philip Fearon | Thread | Re: [xsl] XSLT transformation using, David Carlisle |
Re: [xsl] XSLT - Converting image t, Philip Fearon | Date | Re: [xsl] XSLT transformation using, David Carlisle |
Month |