[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: xsl:template having both name and match

Subject: Re: xsl:template having both name and match
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Thu, 3 Mar 2005 06:04:22 -0800 (PST)
xsl template name match
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@xxxxxxxxx> 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/

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.