Re: [xsl] Removing entity in specific element

Subject: Re: [xsl] Removing entity in specific element
From: david_n_bertoni@xxxxxxxxxx
Date: Fri, 17 Jun 2005 11:28:41 -0700
> I've searched the net high and low, but Google has thus far failed 
> me. I have an element that looks like this:
> 
> <dt><b>Asana</b></dt>
> <dd><p>&#x2014;A position or stance in yoga.</p></dd>
> 
> I want to remove '&#x2014;' from the dd/p, but I can't seem to figure 
> out how to go about doing this. Now, &#x2014; shows up elsewhere (ie. 
> in non dd p tags) and I want those to remain intact and be translated 
> into dashes, but not in this case.

If I understand your question correctly, this is a variation of the 
identity transformation:

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">

<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>
 
<xsl:template match="dd/p/text()">
  <xsl:value-of select="translate(., '&#x2014;', '-')"/>
</xsl:template>
 
</xsl:stylesheet>

This stylesheet just copies the source tree, but replaces the Em Dash 
character in text nodes that have a parent element "p" and a grandparent 
element "dd" with a hyphen.

Hope that helps...

Dave

Current Thread