[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: behavior of xsl:value-of with empty string
--- "Lars Nyman" <larsnyman at 14designs dot com> wrote: > 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> Hi Lars, It seems you're right. The same stylesheet (with just the ext. namespace set to that of Saxon) when applied with Saxon, produces the following result: 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 ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com 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
|