Re: [xsl] xml:preserve space makes xsl:attribute fail in IE6

Subject: Re: [xsl] xml:preserve space makes xsl:attribute fail in IE6
From: David N Bertoni/Cambridge/IBM <david_n_bertoni@xxxxxxxxxx>
Date: Wed, 11 Dec 2002 13:04:42 -0800



Neil Smith <neil@xxxxxxxxxxxxxxx> wrote:
> For my xsl stylesheet, using
>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> version="1.0" xml:space="preserve"> in IE6, I had a problem.
>
> I found that when using the xsl:attribute construct like this, no
> attributes were added to my anchor tag (by checking the HTML source)
>
>          <a>
>          <xsl:attribute name="href">
>                  <xsl:value-of select="@start"/>
>          </xsl:attribute>
>          <xsl:value-of select="title"/>
>          </a>

With xml:space="preserve" in the stylesheet, the literal result element now
has a text child.  Since that text child is generated before the
xsl:attribute instruction is instantiated, the processor cannot add the
attribute.  See:

   http://www.w3.org/TR/xslt#creating-attributes

Although the processor is free to halt the transformation at this point,
MSXSL is recovering by not adding the attribute.

So, you can move the href attribute into the literal result element:

          <a href="{@start}">
          <xsl:value-of select="title"/>
          </a>

or reset xml:space to the default:

          <a xml:space="default">
          <xsl:attribute name="href">
                  <xsl:value-of select="@start"/>
          </xsl:attribute>
          <xsl:value-of select="title"/>
          </a>

I'm surprised you didn't get a warning from the processor.

Dave


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


Current Thread