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:58:18 -0500
At 2010-02-19 13:52 -0800, Spencer Tickner wrote:
Ok, then if I make the template more generic.. ie:

In my response I made it generic by declaring the type of the parameter as an item:


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

       <xsl:function name="qp:test" as="item()*"
xmlns:functx="http://www.qplegaleze.ca";>
               <xsl:param name="n"/>

Is there a way to test if $n is a String?

Sure:


<xsl:when test="$n instance of xsd:string">

... but because your second <xsl:when> relies on $n being a node, I thought it safest to catch all atomic values by testing that the argument isn't a node. I tell my students to write their transformations defensively so as to catch unexpected inputs. I don't think it is safe to simply check only for a string because the next test is going to choke on atomic values of other types.

I hope this helps.

. . . . . . . . . . . . Ken


-- XSLT/XQuery training: after http://XMLPrague.cz 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: http://www.CraneSoftwrights.com/s/i/ Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc Legal business disclaimers: http://www.CraneSoftwrights.com/legal

Current Thread