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(_at_)nag(_dot_)co(_dot_)uk
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--