Subject: RE: 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 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. ?
|