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

RE: [xsl] Whitespace around comments


Subject: RE: [xsl] Whitespace around comments
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 9 Oct 2007 00:26:56 +0100

In XSLT 1.0, with <xsl:output method="xml" indent="yes">, you are pretty
much at the mercy of the implementation. If you care about whitespace, don't
use indentation.

XSLT 2.0 is stricter, but it still says nothing about this case -
implementations can insert whitespace between a comment node and a start or
end tag, though they are advised against it if the content model is known to
be mixed.

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

> -----Original Message-----
> From: Anderson, Paul [mailto:Paul.Anderson@xxxxxxxxxxxxx] 
> Sent: 09 October 2007 00:13
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Whitespace around comments
> 
> Greetings All,
> 
> I'm having some trouble convincing my XSL code to make a 
> comment an inline structure rather than starting a new line 
> with the start of the comment. Here is the template doing the work:
> 
> <xsl:template name="bold">
>  <xsl:variable name="content">
>   <xsl:value-of select="normalize-space(.)"/>  </xsl:variable>
>   <xsl:choose>
>    <xsl:when test="contains(.,'&gt;')"><menu><xsl:call-template
> name="parsemenu"/></menu></xsl:when>
>    <xsl:when test="$content = 'OK' or $content = 
> 'Cancel'"><gui><xsl:apply-templates/></gui></xsl:when>
>    
> <xsl:otherwise><b><xsl:apply-templates/></b><xsl:comment>Comme
> nt text here.</xsl:comment></xsl:otherwise>
>   </xsl:choose>
>  </xsl:choose>
> </xsl:template>
> 
> In the output, I'm seeing the following (as an example):
> 
> <para>All Probes in the load-sharing setup must be assigned 
> the same value for <b>Segment Name</b> <!--Comment text 
> here.-->.</para>
> 
> The newline after the </b> tag introduces whitespace between 
> the bolded word "Name" and the following period. This is a 
> bad thing. I cannot figure out how the newline is getting in 
> between the </b> end tag and the start of the comment. The 
> only thing I can think of is that it is caused by 
> indent="yes" on the output element for this stylesheet.
> 
> Any help is appreciated.
> 
> Best regards,
> 
> Paul
> The contents of this e-mail are intended for the named 
> addressee only. It contains information that may be 
> confidential. Unless you are the named addressee or an 
> authorized designee, you may not copy or use it, or disclose 
> it to anyone else. If you received it in error please notify 
> us immediately and then destroy it.


Current Thread
Keywords