Subject: RE: <xsl:value-of select="for ..." separator=", ">
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 6 May 2005 22:58:45 +0100
|
I suspect that your function returns a sequence of text nodes rather than a
sequence of strings. To make other cases behave more predictably, for
example
<xsl:value-of select="x:f()"/>
<xsl:function name="x:f">
<xsl:text>[</xsl:text><xsl:value-of select="13"/><xsl:text>]</xsl:text>
</xsl:function>
We decided that separators would only be used between atomic values, not
between text nodes.
My guess is that your function is returning text nodes because
(a) it uses xsl:value-of to create its result, rather than xsl:sequence, and
(b) it doesn't declare its return type
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Kevin Rodgers [mailto:kevin.rodgers@xxxxxxx]
> Sent: 06 May 2005 21:04
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: <xsl:value-of select="for ..." separator=", ">
>
> In my XSLT 2.0 stylesheet processed by Saxon 8.3, I had this:
>
> <xsl:value-of
> select="for $relation in $relation-list
> return esd:xref-doc-num($mb3-connection, $relation)"
> separator=", "/>
>
> But the results of the function calls were concatenated, without the
> separator string between them. Using string-join() like this
> yields the
> desired results:
>
> <xsl:value-of
> select="string-join(for $relation in $relation-list
> return
> esd:xref-doc-num($mb3-connection, $relation),
> ', ')"/>
>
> But why is that necessary? Why doesn't the xsl:value-of separator
> attribute work as I expect?
>
> Thanks,
> --
> Kevin Rodgers
|