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(_at_)cranesoftwrights(_dot_)com> 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"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:qp="http://www.qplegaleze.ca"
exclude-result-prefixes="qp xsd">
<xsl:function name="qp:test" as="item()*"
xmlns:functx="http://www.qplegaleze.ca">
<xsl:param name="n" as="node()"/>
<xsl:pram name="n" as="item()"/>
<xsl:choose>
<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:variable>
<xsl:call-template name="doStuff">
<xsl:with-param name="n" select="$node/text()"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$n/descendant-or-self::*">
<xsl:apply-templates select="$n"
mode="test"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="doStuff">
<xsl:with-param name="n"
select="$n"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:function>
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(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--