RE: [xsl] XSL 2.0 - value-of - xml:space="preserve"

Subject: RE: [xsl] XSL 2.0 - value-of - xml:space="preserve"
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 4 Apr 2008 10:50:21 +0800
Yes, this is expected. With xml:space="preserve", whitespace text nodes
appearing in a sequence constructor are significant and are copied to the
output, as if they were enclosed in xsl:text.

With XSLT 1.0 this code would technically be in error, because no text nodes
are allowed as children of xsl:choose. However, many processors tolerated it
(or failed to detect the error), and in 2.0 it has explicitly been made
legal. However, I wouldn't ever advise using xml:space="preserve" in a
stylesheet, the results are too confusing.

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

> -----Original Message-----
> From: Robert Koberg [mailto:rob@xxxxxxxxxx] 
> Sent: 04 April 2008 10:42
> To: xsl-list
> Subject: [xsl] XSL 2.0 - value-of - xml:space="preserve"
> 
> Hi,
> 
> I have the following in a template. I have copied it directly 
> from the template without removing indentation spaces (I 
> don't use tabs):
> 
>       <script type="text/JavaScript" xml:space="preserve"> ...
>         <xsl:variable name="acknowledge">
>           <xsl:choose>
>             <xsl:when test="$task-type=5">3</xsl:when>
>             <xsl:otherwise>1</xsl:otherwise>
>           </xsl:choose>
>         </xsl:variable>
>           document.getElementById("status").value=<xsl:value-of
> separator="" select="$acknowledge"/>;
> 
>      </
> 
> The above produces:
> 
>           document.getElementById("status").value=
>           1
>         ;
> 
> This is being output with xsl:result-document:
> 
> <xsl:result-document href="{$out-path}" encoding="UTF-8" indent="no"
> method="xml">
> ...
> 
> The problem is the xml:space on the script element. If 
> removed, it renders as (I) expected. If xml:space="preserve" 
> is present on the script element, is the result above 
> expected behavior?
> 
> thanks,
> -Rob
> 
> p.s. I haven't looked into this too deeply, but I put an as 
> attribute with a schema type (yes, I declared the namespace):
> <xsl:variable name="acknowledge" as="xs:integer"> and my page 
> rendered empty. ?

Current Thread