Michael Kay wrote:
how can i get the following to work:
<xsl:function name="r2c:hasTextContent" as="xs:boolean">
<xsl:param name="node"/>
<xsl:for-each select="$node/*">
<xsl:choose>
<!--ignore!-->
<xsl:when test="r2c:isOutputNode(.)"/>
<!--gotcha!-->
<xsl:when test="r2c:isLeafNode(.)">
<xsl:value-of select="true()"/>
</xsl:when>
Use xsl:sequence here! xsl:value-of creates a text node. You're converting a
boolean to a string, wrapping the string in a text node, then because an
xs:boolean is required, the text node is atomized, and the string "true" is
converted back to a boolean.
of course. it was supposed to be a sequence, but old habits...
Try:
<xsl:function name="r2c:hasTextContent()" as="xs:boolean">
<xsl:param name="node" as="node()"/>
<xsl:sequence select="some $x in $node/*[not(r2c:isOutputNode(.)]
satisfies
(r2c.isLeafNode($x) or r2c.hasTextContent($x))"/>
</xsl:function>
wow. quantifiers! cool. i hadn't yet noticed they exist.
please no more spoilers, your books on xsl2/xpath2 are scheduled to
arrive on tuesday :-D
thanks a lot!
jörn
--
jörn nettingsmeier
home://germany/45128 essen/lortzingstr. 11/
http://spunk.dnsalias.org
phone://+49/201/491621
if you are a free (as in "free speech") software developer
and you happen to be travelling near my home, drop me a line
and come round for a free (as in "free beer") beer. :-D
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--