|
[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
> 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@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > > 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
|
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
|

Cart








