Hi all,
I am currently converting the following basic XML to FO:
<root>
<section>
<hrline /> Some text
</section>
<section>
<hrdots />Some text <hrline />
</section>
<section>
<p> Some Text <hrline /></p>
</section>
<section>
Some Text
<hrline />
<p>
<sub>Some Text <hrdots /></sub>
</p>
<sub>Some Text</sub>
</section>
<section>
Some Text <hrline />
<img src="smile.gif" />
</section>
</root>
In the resulting FO file each "section" element ends with an underline, however
there also elements that produce horizontal lines/dots. The idea is to try and
prevent the "section" underline from appearing when there is no text or
elements after the last hrline/hrdots. This is to prevent double lines from
appearing.
The best I have managed so far is to get the last hrline/hrdots element within
the section:
<xsl:template match="section">
<xsl:variable name="underline">
<xsl:choose>
<xsl:when test="descendant::node()[self::hrdot or
self::hrline][last()]">
<xsl:text>yes</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>no</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:copy>
<xsl:attribute name="underline-after">
<xsl:value-of select="$underline" />
</xsl:attribute>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
What I need to next is traverse the rest of the "section" sub tree to detect
whether there is any more text or nodes appearing after that last hrline/hrdots
element. An example of the output should look like this:
<root>
<section underline-after="yes">
<hrline /> Some text
</section>
<section underline-after="no">
<hrdots />Some text <hrline />
</section>
<section underline-after="no">
<p> Some Text <hrline /></p>
</section>
<section underline-after="yes">
Some Text
<hrline />
<p>
<sub>Some Text <hrdots /></sub>
</p>
<sub>Some Text</sub>
</section>
<section underline-after="yes">
Some Text <hrline />
<img src="smile.gif" />
</section>
</root>
Any help or advice would be much appreciated.
Thanks
--~------------------------------------------------------------------
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>
--~--