[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Required item type of first argument of
Re: [xsl] Required item type of first argument of 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: Spencer Tickner <spencertickner@xxxxxxxxx> Date: Fri, 19 Feb 2010 13:52:14 -0800 |
Ok, then if I make the template more generic.. ie: <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? Thanks, Spencer On Fri, Feb 19, 2010 at 1:39 PM, G. Ken Holman <gkholman@xxxxxxxxxxxxxxxxxxxx> wrote: > 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" >> B B B B xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >> B B B B xmlns:xsd="http://www.w3.org/2001/XMLSchema" >> B B B B xmlns:qp="http://www.qplegaleze.ca" >> B B B B exclude-result-prefixes="qp xsd"> >> >> B B B B <xsl:function name="qp:test" as="item()*" >> xmlns:functx="http://www.qplegaleze.ca"> >> B B B B B B B B <xsl:param name="n" as="node()"/> > > <xsl:pram name="n" as="item()"/> > >> B B B B B B B B <xsl:choose> > > <xsl:when test="not($n instance of node())"> > B <xsl:call-template name="doStuff"> > B <xsl:with-param name="n" select="$n"/> > B </xsl:call-template> > </xsl:when> > > or, if you really need a node: > > <xsl:when test="not($n instance of node())"> > B <xsl:variable name="node"> > B <xsl:value-of select="$n"/> > B </xsl:variable> > B <xsl:call-template name="doStuff"> > B <xsl:with-param name="n" select="$node/text()"/> > B </xsl:call-template> > </xsl:when> > >> B B B B B B B B B B B B <xsl:when test="$n/descendant-or-self::*"> >> B B B B B B B B B B B B B B B B <xsl:apply-templates select="$n" >> mode="test"/> >> B B B B B B B B B B B B </xsl:when> >> B B B B B B B B B B B B <xsl:otherwise> >> B B B B B B B B B B B B B B B B <xsl:call-template name="doStuff"> >> B B B B B B B B B B B B B B B B B B B B <xsl:with-param name="n" >> select="$n"/> >> B B B B B B B B B B B B B B B B </xsl:call-template> >> B B B B B B B B B B B B </xsl:otherwise> >> B B B B B B B B </xsl:choose> >> B B B B </xsl:function> > > I hope this helps. > > . . . . . . . . . . Ken > > -- > XSLT/XQuery training: B B B after http://XMLPrague.cz 2010-03-15/19 > XSLT/XQuery training: B B B B 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: B http://www.CraneSoftwrights.com/s/i/ > Crane Softwrights Ltd. B B B B B http://www.CraneSoftwrights.com/s/ > G. Ken Holman B B B B B B B B mailto:gkholman@xxxxxxxxxxxxxxxxxxxx > Male Cancer Awareness Nov'07 B http://www.CraneSoftwrights.com/s/bc > Legal business disclaimers: B http://www.CraneSoftwrights.com/legal
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Required item type of fir, G. Ken Holman | Thread | Re: [xsl] Required item type of fir, G. Ken Holman |
Re: [xsl] Required item type of fir, G. Ken Holman | Date | Re: [xsl] Required item type of fir, G. Ken Holman |
Month |