Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > XML > call-template name="{$pCall}" possible ?

Reply
Thread Tools

call-template name="{$pCall}" possible ?

 
 
FrankS
Guest
Posts: n/a
 
      02-02-2005
Hi All,
I have a problem with an call-template cmd at xslt 1.0:

With: pCall = 'ExInput'
------
I try to:

<xsl:call-template name="{$pCall}">
<xsl:with-param name="pVal" select="$pValue"/>
</xsl:call-template>
<!-- ============ -->
<!-- ============ -->
<xsl:template name="ExInput">
<xslaram name="pVal" select="'0'"/>
<td style="background-color:#C0C0C0;"><xsl:call-template
name="XYZ"><xsl:with-param name="pVal"
select="."/></xsl:call-template></td>
</xsl:template>
<!-- ============ -->
-------
But it's not possible to call the Template with the param "{$pCall}" !!
I get the error: undefined template

It there no way to call - or it there an error in my code?
Many thanks for your help before!
BR
Frank

 
Reply With Quote
 
 
 
 
David Carlisle
Guest
Posts: n/a
 
      02-02-2005

call template is like a function call in most compiled languages, the
function (template) name has to be known at complie time.It can't be
constructed from an expression.

Often the answer is to pass in a node not a string then use
apply-templates not call-templates then the template that activates will
be the one that matches your node.

David
 
Reply With Quote
 
 
 
 
Philippe Poulard
Guest
Posts: n/a
 
      02-02-2005
FrankS wrote:
> Hi All,
> I have a problem with an call-template cmd at xslt 1.0:
>
> With: pCall = 'ExInput'
> ------
> I try to:
>
> <xsl:call-template name="{$pCall}">
> <xsl:with-param name="pVal" select="$pValue"/>
> </xsl:call-template>
> <!-- ============ -->
> <!-- ============ -->
> <xsl:template name="ExInput">
> <xslaram name="pVal" select="'0'"/>
> <td style="background-color:#C0C0C0;"><xsl:call-template
> name="XYZ"><xsl:with-param name="pVal"
> select="."/></xsl:call-template></td>
> </xsl:template>
> <!-- ============ -->
> -------
> But it's not possible to call the Template with the param "{$pCall}" !!
> I get the error: undefined template
>
> It there no way to call - or it there an error in my code?
> Many thanks for your help before!
> BR
> Frank
>


hi,

it is impossible to do it directly

however, there is a pattern for this, named "template tags":

first, you have to mark your template with a tag; the template must
match that tag:

<my:ExInput/>
<xsl:template match="my:ExInput">
<!-- your stuff here -->
</xsl:template>

<my:ExOutput/>
<xsl:template match="my:ExOutput">
<!-- your stuff here -->
</xsl:template>

to invoke it, use this:
<xsl:apply-templates select="document()/*/my:*[ local-name()=$pCall ]"/>

--
Cordialement,

///
(. .)
-----ooO--(_)--Ooo-----
| Philippe Poulard |
-----------------------
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
efficient data loading with Python, is that possible possible? igor.tatarinov@gmail.com Python 10 12-14-2007 04:44 PM
is it possible to possible to create an iterator from a callback interace? aninnymouse@gmail.com C Programming 4 02-21-2006 02:10 PM
XML + XSD: Is it possible to get all possible Values for an Element? Markus Java 1 11-22-2005 02:51 PM
Possible to connect 2 computers via USB? Michael Giroux Wireless Networking 2 09-02-2004 03:27 AM
Possible domain related wireless problem =?Utf-8?B?QWxpIEQ=?= Wireless Networking 0 08-10-2004 01:59 AM



Advertisments