[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] behavior of xsl:value-of with empty string
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? 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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|