Subject: [xsl] Can templates be invoked based on the value of a variable? From: "pilgrim cnonline.net" <pilgrim@xxxxxxxxxxxx> Date: Wed, 1 Apr 2009 14:52:01 -0500 |
I would like to be able to invoke templates based on the value of a variable. I've done some Internet searching, but haven't seen what I'm looking for, so I don't know whether it's possible or not. My various attempts have failed. My data has the structure: <data> <item1> ... </item1> <item2> .... </item2> </data> I want to process the nodes <item1/> or <item2/>, but not both, depending on a variable derived from some other processing. The outline of the XSL processing that I'd like to do is: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:template match="data"> <xsl:variable name="i">2</xsl:variable> <!-- $item will have a value of either "item1" or "item2" --> <xsl:variable name="item">item<xsl:value-of select="$i"/></xsl:variable> <!-- Want to invoke template for either item1 or item2, but not both. --> <!-- Would like to avoid using a 'choose' statement. --> <!-- This does not work, but is conceptually what I'm thinking. --> <xsl:apply-templates select="$item" /> </xsl:template> <xsl:template match="item1"> ... </xsl:template> <xsl:template match="item2"> ... </xsl:template> </xsl:stylesheet> I could use a <choose/> statement to do the selection based on the $item variable, but I'm wondering whether there is a more "elegant" way, or whether the <choose/> is the way to go even though the code is longer and "bulkier". Thanks for suggestions. -- Mike
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Looping through a tree an, Emmanuel Bégué | Thread | Re: [xsl] Can templates be invoked , Michael Müller-Hille |
Re: [xsl] Looping through a tree an, Mark Peters | Date | Re: [xsl] Can templates be invoked , Michael Müller-Hille |
Month |