RE: [xsl] how to "print" xsl:element result from inside a function?

Subject: RE: [xsl] how to "print" xsl:element result from inside a function?
From: "Mtekel" <thx@xxxxxxxxx>
Date: Sun, 10 May 2009 08:16:49 +0200
...Changed all xsl:value-of to xsl:sequence (also in the how I call the
function) and also as="element()*" and it WORKS!

Thanks, you have helped me a lot. I had hard times trying to figure out this
myself, do you know any good web page/site with guides on XML and
information alike (I mean st. like this list,,, etc. )?

-----Original Message-----
From: Mukul Gandhi [mailto:gandhi.mukul@xxxxxxxxx]
Sent: 10. maja 2009 8:01
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] how to "print" xsl:element result from inside a function?

On Sun, May 10, 2009 at 9:04 AM, Mtekel <thx@xxxxxxxxx> wrote:
> <xsl:function name="F:TagIT" as="xs:string">
>        <xsl:param name="TAG"/>
>        <xsl:element name="{$TAG}">MISSING!</xsl:element>
> </xsl:function>
> <xsl:function name="F:AddMissing" >
>        <xsl:param name="List" />
>                <xsl:if test="not(empty($List))">
>                <xsl:variable name="TAG" select="subsequence($List,1,1)"/>
>                <xsl:value-of select="F:TagIT($TAG)"/>
>                <xsl:value-of select="F:AddMissing(remove($List,1))"/>
>        </xsl:if>
> </xsl:function>
> And then later I call the function by:
> <xsl:value-of select="F:AddMissing(('Test1','t2','tst3'))"/>
> It will print MISSING!MISSING!MISSING! - but without the XML tags
> by xsl:element.

xsl:value-of prints the 'text nodes' and not elements as you want.

I think, you must declare the function to return element()* and then
do, xsl:sequence select="" instead of xs:value-of.

Mukul Gandhi

Current Thread