Subject: Re: [xsl] Apply Templates, when to use which? how do templates work? From: "John Smith" <debrief@xxxxxxxxx> Date: Tue, 28 Aug 2007 12:44:48 +0100 |
> > 0. Does <apply-templates select="xyz" /> perform a match on the xyz > > node??? xyz node and all its immediate children only??? or xyz node > > and all descendants of xyz node? > > > the xpath xyz selects a set of nodes, in this case the set of all > children of the current node with that name. Templates are then applied > to those nodes (only) in document order. this call to apply templates > will not apply templates to descendants of any of these > nodes. Descendants will only be processed if one of the templates that > is applied recursively applies templates. (The default template for > elements applies templates to child nodes, so there maty not be any > explict calls to apply-templates) > How does one get rid of default templates? > > 1. Does > > <template match="xyz"> ... </template> > > match xyz regardless of whether I wanted it do do so or not? > > > If you didn't want it to match xyz you would presumably use a different > match pattern. The template _matches_ xyz but it may or may not be > executed depending on whether templates are ever applied to that node. > > > What I'm > > trying to say there is no starting point of execution which I can use > > to then decide which template should be applied at any given moment??? > > In XSLT 1 the starting point is always / so if for example you have > > <xsl:template match="/"> > hello world > </xsl:template> > > then processing any input document always produces "hello world" it > doesn't matter what other match templates are in the stylesheet as they > will never be executed as this template just outputs the text and stops > it does not apply templates to any more nodes. > What's the behaviour of xslt 2.0 in this regards? > > > 4. What's the best practice for using applying templates in terms of > > when to use which form?? > > <apply-templates /> > > <apply-templates select="xyz" /> > > <apply-templates select="xyz" mode="foo" /> > > <call-template name="bar" /> > > > It's not a case of best practice, they all do different things. What do each do differently? I don't have experience with xslt(obviously apparent) but it appears that using call-template can achieve what the others achieve plus the use of parameters. Also, are there any efficiency implications with each of these ? Many thanks for the reply, it has cleared up a lot of things I was struggling with :S
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Apply Templates, when to , David Carlisle | Thread | RE: [xsl] Apply Templates, when to , Trevor Nicholls |
Re: [xsl] Apply Templates, when to , Andrew Welch | Date | Re: [xsl] Apply Templates, when to , Florent Georges |
Month |