Re: [xsl] Required item type of first argument of <function> is node(); supplied value has item type xs:string

Subject: Re: [xsl] Required item type of first argument of <function> is node(); supplied value has item type xs:string
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Fri, 19 Feb 2010 16:39:19 -0500
At 2010-02-19 13:30 -0800, Spencer Tickner wrote:
I'm creating a function (so using 2.0), and this function should be
generic enough to handle pretty much anything I throw at it, so I set
the param type as node(). Trouble pops up though when I call a
function such as the upper-case() xslt function on the parameter being
passed in, as it's a string now, not a node.

How can you convert a string to a text node?

You cannot ... you can build a text node context free or in a temporary tree from a string, but it will not have any ancestors or descendants (actually, in a temporary tree you could build ancestors .. but there is no relationship to the source node that was converted to upper case.

I put together an example of the problem I'm having below:

<?xml version='1.0'?>
<xsl:stylesheet version="2.0"
        exclude-result-prefixes="qp xsd">

        <xsl:function name="qp:test" as="item()*"
                <xsl:param name="n" as="node()"/>

<xsl:pram name="n" as="item()"/>


<xsl:when test="not($n instance of node())"> <xsl:call-template name="doStuff"> <xsl:with-param name="n" select="$n"/> </xsl:call-template> </xsl:when>

or, if you really need a node:

<xsl:when test="not($n instance of node())">
 <xsl:variable name="node">
   <xsl:value-of select="$n"/>
 <xsl:call-template name="doStuff">
   <xsl:with-param name="n" select="$node/text()"/>

<xsl:when test="$n/descendant-or-self::*">
<xsl:apply-templates select="$n" mode="test"/>
<xsl:call-template name="doStuff">
<xsl:with-param name="n" select="$n"/>

I hope this helps.

. . . . . . . . . . Ken

XSLT/XQuery training:      after 2010-03-15/19
XSLT/XQuery training:         San Carlos, California 2010-04-26/30
Principles of XSLT for XQuery Writers: San Francisco,CA 2010-05-03
XSLT/XQuery/UBL/Code List training: Trondheim,Norway 2010-06-02/11
Vote for your XML training:
Crane Softwrights Ltd.
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Male Cancer Awareness Nov'07
Legal business disclaimers:

Current Thread