We call resulthandler->characters in the code for xsl:value-of even if the calculated stringvalue is an empty string. This has two effects: 1. In the standalone-outputhandlers the following stylesheet <out><xsl:value-of select="''"/></out> gives the output "<out></out>" rather then "<out/>". This makes us fail a lot of the string tests in xalan. 2. The following stylesheet <out><xsl:value-of select="''"/><xsl:attribute name="foo"/></out> will not create the attribute since we "close" the element when executing the xsl:value-of. The spec says on xsl:attribute: "The following are all errors: Adding an attribute to an element after children have been added to it..." And on xsl:value-of: "The string specifies the string-value of the created text node. If the string is empty, no text node will be created." So it's clear that we are doing the wrong thing. There are two ways to solve this. Either we teach all the output-handlers to ignore ::characters/::charactersNoOutputEscaping being called with an empty string, or we make xsl:value-of not call the resulthandler if the string is empty. I've done the latter since that's what the spec says.
Created attachment 112646 [details] [diff] [review] patch to fix i also included a small fix to get rid of a warning in the HTML-output-handler where we were peek()-ing an empty stack
16 years ago
Comment on attachment 112646 [details] [diff] [review] patch to fix if you believe it or not, firstname.lastname@example.org ;-)
Attachment #112646 - Flags: review?(axel) → review+
Attachment #112646 - Flags: superreview?(peterv) → superreview+
Comment on attachment 112646 [details] [diff] [review] patch to fix this is a very lowrisk patch since it hardly changes any logic. It's fully contained to XSLT, no other pages will be affected.
Attachment #112646 - Flags: approval1.3b?
Comment on attachment 112646 [details] [diff] [review] patch to fix a=asa (on behalf of drivers) for checkin to 1.3beta.
Attachment #112646 - Flags: approval1.3b? → approval1.3b+
checked in. thanks for reviews
Status: NEW → RESOLVED
Last Resolved: 16 years ago
Resolution: --- → FIXED
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.