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

Re: [xsl] normalize-space(me)


Subject: Re: [xsl] normalize-space(me)
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Mon, 17 Jun 2002 13:00:27 -0400

At 11:05 AM 6/17/2002, David wrote:
I think you just want
<xsl:template match="*"/>
 <xsl:copy>
  <xsl:apply-templates/>
 </xsl:copy>
</xsl:template>

<xsl:template match="text()">
 <xsl:value-of select="translate(.',&#10;,&#9;',  ')"/>
</xsl:template>

This answer is the best, I think.


The problem with normalizing space on all text nodes is that it turns

<TITLE>This is
<S>not</S> a
normal title</TITLE>

Into

<TITLE>This is<S>not</S>a normal title</TITLE>

which won't do.

The alternative to David's translate() -- thinkable in some situations, and having the virtue of collapsing runs of spaces -- is to normalize, then put back spaces around inline elements like <S> above. The problem with this technique is knowing when to put them back and when not to: sometimes the heuristics can get pretty hairy, and sometimes (for example if you're using subscripts to do things like H<sub>2</sub>O) impossible.

Cheers,
Wendell


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================


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




Current Thread
Keywords
xml