This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: behavior of xsl:value-of with empty string
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Tue, 1 Oct 2002 16:55:49 +0100
- Subject: RE: [xsl] behavior of xsl:value-of with empty string
- Reply-to: xsl-list at lists dot mulberrytech dot com
> The XSLT spec says that the xsl:value-of element creates a
> text node in the result tree, but if the string is empty, no
> text node should be created. I have a situation where a rtf
> is initially bound to a variable, then converted to a nodeset
> using an extension function and I am, thus, able to detect
> the processor's (lack of) adherence to this rule. And I
> believe msxml may not be following the spec. Can someone,
> please, confirm my suspicion or correct my misunderstanding?
The specification of msxsl:node-set() is entirely under Microsoft's
control.
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
>
> If I run the stylesheet below, I get the following output:
>
> test id=1: count(child::node())=1, expected 0
> test id=2: count(child::node())=0, expected 0
> test id=3: count(child::node())=3, expected 1
> test id=4: count(child::node())=2, expected 1
> test id=5: count(child::node())=2, expected 1
> test id=6: count(child::node())=1, expected 1
> test id=7: count(child::node())=1, expected 1
> test id=8: count(child::node())=1, expected 1
> test id=9: count(child::node())=3, expected 2
>
> whereas I had expected to get:
>
> test id=1: count(child::node())=0, expected 0
> test id=2: count(child::node())=0, expected 0
> test id=3: count(child::node())=1, expected 1
> test id=4: count(child::node())=1, expected 1
> test id=5: count(child::node())=1, expected 1
> test id=6: count(child::node())=1, expected 1
> test id=7: count(child::node())=1, expected 1
> test id=8: count(child::node())=1, expected 1
> test id=9: count(child::node())=2, expected 2
>
> Lars
>
>
> <?xml version="1.0"?>
> <xsl:transform version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:msxsl="urn:schemas-microsoft-com:xslt"
> exclude-result-prefixes="msxsl">
>
> <xsl:template match="/">
> <xsl:variable name="tests-rtf">
> <tests>
> <test id="1" children="0"><xsl:value-of select="''"/></test>
> <test id="2" children="0"><xsl:value-of
> select="''"/><xsl:value-of select="''"/></test>
> <test id="3" children="1"><xsl:value-of
> select="''"/><element/><xsl:value-of select="''"/></test>
>
> <test id="4" children="1"><xsl:value-of
> select="''"/><xsl:value-of
> select="''"/><element/><xsl:value-of select="''"/></test>
> <test id="5" children="1"><xsl:value-of
> select="''"/><element/><xsl:value-of
> select="''"/><xsl:value-of select="''"/></test>
> <test id="6" children="1"><xsl:value-of
> select="''"/><xsl:value-of
> select="''"/><element/><xsl:value-of
> select="''"/><xsl:value-of select="''"/></test>
>
> <test id="7" children="1"><xsl:value-of
> select="'1'"/><xsl:value-of select="''"/></test>
> <test id="8" children="1"><xsl:value-of
> select="'1'"/><xsl:value-of select="''"/><xsl:value-of
> select="''"/></test>
> <test id="9" children="2"><xsl:value-of
> select="'1'"/><xsl:value-of
> select="''"/><element/><xsl:value-of select="''"/></test>
> </tests>
> </xsl:variable>
>
> <xsl:for-each select="msxsl:node-set($tests-rtf)/tests/test">
> test id=<xsl:value-of select="@id"/>:
> count(child::node())=<xsl:value-of
> select="count(child::node())"/>, expected <xsl:value-of
> select="@children"/><br/>
> </xsl:for-each>
> </xsl:template>
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list