Re: [xsl] Applying text nodes: 2 processors, 2 behaviours

Subject: Re: [xsl] Applying text nodes: 2 processors, 2 behaviours
From: Joerg Heinicke <joerg.heinicke@xxxxxx>
Date: Mon, 18 Nov 2002 18:49:13 +0100
<xsl:template match="root">
<html>
  <body>
    <xsl:call-template name="msg">
      <xsl:with-param name="title">A Title</xsl:with-param>
      <xsl:with-param name="body">Body: <xsl:value-of select="node" /></xsl:with-param>
    </xsl:call-template>
  </body>
</html>
</xsl:template>

<xsl:template name="msg">
  <xsl:param name="title" />
  <xsl:param name="body" />
>   <p><strong><xsl:apply-templates select="$title" /></strong></p>
>   <p><em><xsl:apply-templates select="$body" /></em></p>
> </xsl:template>
>
> </xsl:stylesheet>

Both parameters store Result Tree Fragments in them. They can only be evaluated to strings.

You have 2 possibilities:

1. Change the RTFs to node sets, but this does not make sense in your case I think. The needed extension functions are mostly called node-set().

2. Do not use apply-templates, but value-of.

>   <p><strong><xsl:value-of select="$title" /></strong></p>
>   <p><em><xsl:value-of select="$body" /></em></p>

Furthermore you can then avoid the RTF to string conversion, you can store the strings directly:

> <xsl:with-param name="title" select="'A Title'"/>
> <xsl:with-param name="body" select="concat('Body: ', node)"/>

Regards,

Joerg


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list



Current Thread