RE: [xsl] Deciding whether param contains nodeset

Subject: RE: [xsl] Deciding whether param contains nodeset
From: <Jarno.Elovirta@xxxxxxxxx>
Date: Mon, 17 Oct 2005 14:26:46 +0300
Hi,

> i have an template
>
> 	<xsl:template name="test">
> 		<xsl:param name="repl" select="''"/>
> 	</xsl:template>
>
> Sometimes i call this template with repl = string, sometimes i want to
> call it with repl = nodeset.
>
> When i apply-templates on repl and repl is a string, so the following
> execption arises:
> org.apache.xpath.XPathException: #RTREEFRAG kann nicht in NodeList
> konvertiert werden!
> 							  (in english:
> cannot be converted in nodeset)
>
> So i wonder whether it is possible to decide if repl is a string or a
> nodeset.
> If repl = string output should be the value of the String
> if repl = nodeset output should be apply-templates nodeset
>
> How can i decide in "test" which type the param repl is of?

You can't with XSLT 1.0. How about

  <xsl:template name="test">
    <xsl:param name="sepl-string" select="''"/>
    <xsl:param name="sepl-nodeset" select="/.."/>
    <xsl:choose>
      <xsl:when test="$sepl-nodeset">
        <xsl:apply-templates select="$sepl-nodeset"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$sepl-string"/>
      </xsl:otherwise>
    <xsl:choose>
  </xsl:template>

and when you call the template pass the correct parameter.

Cheers,

Jarno

Current Thread