Re: [xsl] Controlling Whitespace in IE

Subject: Re: [xsl] Controlling Whitespace in IE
From: "Spencer Tickner" <spencertickner@xxxxxxxxx>
Date: Thu, 4 May 2006 10:17:56 -0800
Hi Michael,

Thanks for the response.. Although I have to admit, I feel a little
stuck all of a sudden.

Spencer

On 5/4/06, Michael Kay <mike@xxxxxxxxxxxx> wrote:
Sadly, IE throws the space away before invoking the XSLT processor.

Complaining to Microsoft is unlikely to do much good.

If you invoke the transformation from Javascript rather than via the
<?xml-stylesheet?> processing instructions, there are magic incantations
that cause the whitespace to be preserved.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Spencer Tickner [mailto:spencertickner@xxxxxxxxx]
> Sent: 04 May 2006 18:55
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Controlling Whitespace in IE
>
> Hi Everyone,
>
> Thanks in advance for the help.
>
> I'm having an issue with ie's translation of my xml document.
> With this document:
>
> <?xml version="1.0"?>
> <?xml-stylesheet type="text/xsl" href="test.xsl"?> <root>
>       <sentencetext>blah <def>blah blah</def> blah blah
> <def>foo</def> <def>bar</def>.</sentencetext> </root>
>
> the foo and the bar are stuck together. I am using this
> stylesheet to try and force them apart:
>
> <?xml version='1.0'?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> <xsl:output media-type="html"/>
>
> <xsl:variable name="cr"><xsl:text>
> </xsl:text></xsl:variable>
>
> <xsl:template match="/">
>       <html>
>       <body>
>       <xsl:apply-templates/>
>       </body>
>       </html>
> </xsl:template>
>
> <xsl:template match="sentencetext">
>       <p><xsl:apply-templates/></p><xsl:value-of
> select="$cr"/> </xsl:template>
>
> <xsl:template match="def">
> <a class="definition"
> href="something"><em><xsl:apply-templates/></em></a>
> </xsl:template>
>
> <xsl:template match="text()">
> <xsl:choose>
> <xsl:when test="normalize-space(.) = ''"><xsl:text>
> </xsl:text></xsl:when> <xsl:otherwise><xsl:value-of
> select="."/></xsl:otherwise> </xsl:choose> </xsl:template>
>
> </xsl:stylesheet>
>
> IE does not seem to be translating the normalize-space
> funtion correctly.
>
> For instance, when I put a 1 before the <xsl:text>
> </xsl:text> in firefox I get 1's exactly where I would expect
> them and foo and bar are seperated by a space. However in IE,
> no 1's appear. Does anybody know of a hack or work around for this.
>
> Thanks,
>
> Spencer
> Victoria BC, Canada

Current Thread