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

Re: Problem with xsl:template using XSLT 1.0

Subject: Re: Problem with xsl:template using XSLT 1.0
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Tue, 4 Dec 2007 10:23:22 +0000
Re:  Problem with xsl:template using XSLT 1.0
On 03/12/2007, Florent Georges <lists@xxxxxxxxxxxx> wrote:
> Scott Trenda wrote:
>
>   Hi
>
> > That's a decent philosophy, but the real-world problem is
> > that you usually have large chunks of data within your
> > source document that you don't want in your output.
>
>   First I didn't say that was THE answer.  But that's a way
> of developing with XSLT that one doesn't have usualy when
> coming from imperative languages, and that helps to fight
> complexity.
>
>   Of course the point is not to not control what the
> stylesheet does, but to define what it does in places that
> ease maintainability.
>
> > If you apply-templates to all children indiscriminately
> > when you only actually want to process a certain subset of
> > child nodes, then you have a high probability that the
> > built-in templates will catch that unwanted data,
> > resulting in unwanted text everywhere in your result,
> > interspersed with the text you did want.
>
>   If the default template rules don't do what you want,
> don't use them.




On 03/12/2007, Florent Georges <lists@xxxxxxxxxxxx> wrote:
> Scott Trenda wrote:
>
>   Hi
>
> > That's a decent philosophy, but the real-world problem is
> > that you usually have large chunks of data within your
> > source document that you don't want in your output.
>
>   First I didn't say that was THE answer.  But that's a way
> of developing with XSLT that one doesn't have usualy when
> coming from imperative languages, and that helps to fight
> complexity.
>
>   Of course the point is not to not control what the
> stylesheet does, but to define what it does in places that
> ease maintainability.
>
> > If you apply-templates to all children indiscriminately
> > when you only actually want to process a certain subset of
> > child nodes, then you have a high probability that the
> > built-in templates will catch that unwanted data,
> > resulting in unwanted text everywhere in your result,
> > interspersed with the text you did want.
>
>   If the default template rules don't do what you want,
> don't use them.

If I've followed the thread I think you're discussing the choice of
filtering the nodes to be processed using a predicate:

<xsl:apply-templates select="some-nodes[some-filter]"/>

with:

<xsl:template match="some-nodes"> ....

or using a filter at the template match level with no-op templates:

<xsl:apply-templates/>
<xsl:template match="some-nodes"/>
<xsl:template match="some-nodes[some-filter]">....

?



> > Also, as I had said in the previous response, template
> > match patterns must be context-free. If you need to select
> > a node-set that requires a context, you're limited to
> > apply-templates.
>
>   I must confess I don't understand this paragraph.

I kind of understand what Scott means but I'm not sure I agree - in
the above example doesn't the template match pattern in the latter
method give you same level of context as the select in the former?

match="foo" has no context as it will match any <foo/>, but
match="/root/foo" will only match <foo> children of the single <root>
element - which I think is the context you mean.

As for the two techniques, the latter gives you more scope for
overriding, and suits the one-template-per-element design that some
people like (for each input element there will be  at least one
non-default template).  Also in an IDE you would see all the match
patterns together, which you don't get if the logic is in a predicate
in the select of an apply-templates somewhere.

I tend to use the former, but I can definitely see the merits of using
the latter.

cheers
andrew

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.