- From: <bugzilla@jessica.w3.org>
- Date: Fri, 03 Jul 2015 09:23:19 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=28888 Bug ID: 28888 Summary: [xslt 3.0] xsl:on-empty with xsl:value-of Product: XPath / XQuery / XSLT Version: Last Call drafts Hardware: PC OS: All Status: NEW Severity: normal Priority: P2 Component: XSLT 3.0 Assignee: mike@saxonica.com Reporter: mike@saxonica.com QA Contact: public-qt-comments@w3.org Given the following: <a> <xsl:value-of select="@href"/> <xsl:on-empty select="'(no link)'"/> </a> users might find it surprising that if there is no @href attribute, the result will be the empty element <a/>. The reason is that in this situation the result of the xsl:value-of instruction is a text node whose string value is zero length; it is not an empty sequence. Therefore as far as xsl:on-empty is concerned, the result of the sequence constructor is non-empty. Zero-length text nodes are ignored in the rules for constructing complex content (e.g. the content of the a element) but they are not ignored for the purposes of xsl:on-empty. It's complicated by the fact that zero-length text nodes are not ignored everywhere, e.g in the body of xsl:variable or xsl:function: <xsl:variable name="x" as="item()*"> <xsl:value-of select="@href"/> <xsl:on-empty select="'(no link)'"/> </xsl:variable> Simply changing the rule so that xsl:on-empty ignores zero-length text nodes gives streamability problems with, for example, <xsl:variable name="x" as="item()*"> <xsl:on-empty select="'(no link)'"/> <xsl:value-of select="@href"/> <xsl:value-of select="@href"/> <xsl:value-of select="a"/> </xsl:variable> where the result of on-empty needs to be inserted into the result sequence before the three zero-length text nodes, but we can't evaluate it until the end. There is a workaround, which is to write <a> <xsl:conditional-content> <xsl:value-of select="@href"/> </xsl:conditional-content> <xsl:on-empty select="'(no link)'"/> </a> but it's not pretty. -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Friday, 3 July 2015 09:23:22 UTC