Hi, Thomas.

Thomas Steur <[EMAIL PROTECTED]> wrote on 2008-08-23 06:23:53 PM:
> <?xml version="1.0" encoding="UTF-8"?> 
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
> version="1.0"> 
> <xsl:template match="/"> 
>    <xsl:variable name="content"><xsl:call-template 
> name="test"/></xsl:variable> 
>    <xsl:value-of select="string-length($content)"/> 
> </xsl:template> 
> <xsl:template name="test"> 
>    <img src="http://path-to-img"; width="" height=""/> 
> </xsl:template> 
> </xsl:stylesheet> 
> 
> Why do I get the result "0" at <xsl:value-of select="string-
> length($content)"/> ? 
> 
> If I use <xsl:copy-of select="$content"/> it has content alternatively 
nodes. 

The value of the "content" variable is a node - a root node, in this case. 
 Applying the string-length function to a node causes the node to be 
converted to a string, which is done by returning the string value of the 
node.  The string value of a root node or of an element node is equal to 
the string values of all the text node descendants of the node 
concatenated in document order.  The root node that is the value of the 
"content" variable has no text node descendants, so it's string value is a 
zero-length string.  Thus, the string-length function returns zero.

I hope that helps.

Thanks,

Henry
------------------------------------------------------------------
Henry Zongaro
XML Transformation & Query Development
IBM Toronto Lab   T/L 313-6044;  Phone +1 905 413-6044
mailto:[EMAIL PROTECTED]

Reply via email to