This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Translating character entities for plain text output


I've found a lot of discussion in the archives about solving character
entity problems for HTML output, but not much on plain text:

Generating plain text from docbook via XSLT, I need to output a space for
  and -- for —.  I can get some funny glyphs (like  for  )
and various literal codes, but not the result I want. I could postprocess
the output, but I'd love to fix the style sheet.

The XML document is encoded in utf-8 and resolves these characters through
the standard docbook entity files. Specifically, <!ENTITY nbsp "&#160;"> and
<!ENTITY mdash " &#38 #x2014;">.

In the stylesheet, I've tried defining the entity in a local subset, also
html and text methods and various encodings in the xsl:output. The following
almost works:

<xsl:template match="text()">
     <xsl:if test="contains(.,'&#160;')">
         <xsl:value-of select="translate(., '&#160;', ' ')"/>
     </xsl:if>
</xsl:template>

Unfortunately, this seems to suppress another essential translation on the
same context:

     <xsl:value-of select="translate(., '&#xA;&#xD;', ' ')"/> 

I can do either, but not both.

There must be a better way...

Thanks,
Denis


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]