[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] broken text surrounding an entity I want to drop?


Subject: Re: [xsl] broken text surrounding an entity I want to drop?
From: "Joris Gillis" <roac@xxxxxxxxxx>
Date: Tue, 13 Sep 2005 09:07:34 +0200

Hi,

Tempore 04:50:55, die 09/13/2005 AD, hinc in xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Trevor Nicholls <trevor@xxxxxxxxxxxxxxxxxx>:

My source XML file contains a myriad of <A id=something></A> entities which
for the most part I wish to drop. I am using an identity template plus the
following to do this:

-----
<!-- drop A tags which have no content -->
<xsl:template match="A">
<xsl:if test="* or text() or string(.)">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:if>
</xsl:template>
-----

Unfortunately and unsurprisingly this is too naC/ve; it drops the <a> tags OK
but leaves me with broken text.

A small change that the solution is as simple as adding this template to your stylesheet:


<xsl:template match="text()">
	<xsl:value-of select="normalize-space(.)"/>
</xsl:template>

If this gives complications with wanted whitespace, tweak this template a bit. Maybe to only let it chop of leading or trailing newlines and/or to only let it match 'text' nodes adjacent to 'A' elements.

regards,
--
Joris Gillis (http://users.telenet.be/root-jg/me.html)
B+Et ipsa scientia potestas estB;  - Francis Bacon , Meditationes sacrae


Current Thread
Keywords
xml