xsl-list
[Top] [All Lists]

Re: xsl:template having both name and match

2005-03-03 07:04:22
Thank you David for reply..

The example you have given works.. But I have a
doubt..

For e.g. if XML file is -
<root>
  <foo>xxx</foo>
  <bar>yyy</bar>
</root>

And stylesheet is -
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">

<xsl:output method="html" indent="yes" />

<xsl:template match="bar" name="bar">
 <span><xsl:apply-templates/></span>
</xsl:template>

<xsl:template match="foo">
 <div class="foo"><xsl:call-template
name="bar"/></div>
</xsl:template>

</xsl:stylesheet>

When I run the transform with Saxon 8.1 , I get the
output -
<div class="foo"><span>xxx</span></div>
<span>yyy</span>

When context node is <bar> , the 1st template is
invoked and it generates output <span>yyy</span> ,
which is perfectly fine..

But when context node is <foo> , the 2nd template is
invoked.. which further calls <xsl:call-template
name="bar"/> . My doubt is - when <xsl:call-template
name="bar"/> instruction is executed from 2nd
template, how(and is it supposed to according to
spec..) is the context propagated to the 1st
template.. I am surprised why <xsl:apply-templates/>
is generating output xxx, when called from 2nd
template.. 

Can you please explain the flow of control in template
<xsl:template match="foo"> ? 

Regards,
Mukul

--- David Carlisle <davidc(_at_)nag(_dot_)co(_dot_)uk> wrote:

  I want to know in which circumstances such a
template
  definition is useful.. Can somebody please provide
an
  example where this has real practical use..?


I use it sometimes. suppose you have two elements in
your source
<foo>xxx</foo> and <bar>xxx</bar>
and you want foo to generate the same output as bar
except that
it has to be surrounded by <div class="foo">
...</div>.

One way is to have

<xsl:template match="bar" name="bar">
 <span><xsl:apply-templates/></span>
</xsl:template>

<xsl:template match="foo">
 <div class="foo"><xsl:call-template
name="bar"/></div>
</xsl:template>

Of course, there are other ways to achieve this, but
still this idiom
comes in handy sometimes.

David




        
                
__________________________________ 
Celebrate Yahoo!'s 10th Birthday! 
Yahoo! Netrospective: 100 Moments of the Web 
http://birthday.yahoo.com/netrospective/

--~------------------------------------------------------------------
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>
--~--