xsl-list
[Top] [All Lists]

RE: Output character references for all but one character

2004-06-21 11:23:54
Consider the following xml:

<node value="£">Hello&#160;World</node>

I have the problem where I need characters outside the ascii 
range to be output as references, apart from the pound sign, 
which must remain as the actual character.

I don't understand. You want the output to be ASCII, but you want the # sign
output as a hex A3 byte? Those are surely contradictory requirements.

Michael Kay



The processor is Saxon 7.8 and is fixed.  I can't use d-o-e 
as the pound sign is always an attribute value, and saxon 7.8 
no longer supports d-o-e on attributes in favour of character 
maps.  When I use the following stylesheet, I get a '?' 
character instead of the the pound, I guess because Saxon 
can't output the pound sign because it's not in the ascii range...  

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  xmlns:saxon="http://saxon.net.sf/";
  exclude-result-prefixes="saxon">

<xsl:output method="xhtml" encoding="ascii" 
omit-xml-declaration="yes" use-character-maps="style"/>

<xsl:character-map name="style">
  <xsl:output-character character="£" string="&#163;"/>
</xsl:character-map>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>

Outputs:

<node value="?">Hello&#160;World</node>

I'm really after an exact copy of the input: 

<node value="£">Hello&#160;World</node>

Any ideas?

cheers
andrew

--+------------------------------------------------------------------
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>
--+--