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

Re: Nicer way to change context-node than xsl:for-each

Subject: Re: Nicer way to change context-node than xsl:for-each ?
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Sat, 5 Dec 2009 07:55:35 -0800
Re:  Nicer way to change context-node than xsl:for-each
On Sat, Dec 5, 2009 at 7:05 AM, Mukul Gandhi <gandhi.mukul@xxxxxxxxx> wrote:
> Thanks, Dimitre for comments.
>
> I was also thinking to propose a simpler syntax, for passing context
> to call-template (as follows, please):
>
> <xsl:call-template name="xx" context="nodeReference">
> B  <!-- template contents -->
> </xsl:call-template>
>
> i.e, we can have an attribute on call-template, instead of wrapping it
> within something like xsl:context (which looks much verbose).
>

If I were on the WG I wouldn't spend time on this -- this is largely
obsolete, unnecessary, dead.


>> Such a feature is not needed, especially in XSLT 2, where the use of
>> <xsl:call-template> shouldn't be recommended -- why would anyone
>> prefer it to the use of <xsl:function> ?
>
> I think, xsl:function can be only called within XPath 2 expressions,
> whereas, call-template can be part of a sequence constructor. IMHO,
> both are useful.

The use of an <xsl:function> to produce content is simple:

  <xsl:sequence select="my:foo(bar)"/>


>
>> Even in XSLT 1.0 <xsl:call-template> is not necessary -- one can
>> always accomplish the same with <xsl:apply-templates>
>
> I largely agree. But I think, xsl:apply-templates is kind of push
> processing (and tries to find nodes in the input document, and applies
> the match template on them).

Didn't you know that <xsl:apply-templates> can be used in pull-style
processing? Modes and uniquely namespaced nodes should light a bulb :)


Anyone (who hasn't already come to this conclusion) can find all facts
and conclude that the following is not needed:

>
> But xsl:call-template looks to me, truly a subroutine (but it being
> able to inherit the context of caller, makes it different than a true
> black box subroutine). It can take certain arguments, and can return a
> RTF (in XSLT 1) or a sequence (in 2.0).
>
> btw, I think having following enhancement to 2.0 language:
>
> <xsl:call-template name="xx" inherit-context="no">
> B  <!-- template contents -->
> </xsl:call-template>
>
> (default value of, inherit-context can be "yes")
>
> can make call-template instructions truly black box subroutine calls.
> I think, this will be useful to users.
>
> But I agree, that xsl:call-template and xsl:apply-templates can
> archive similar objectives, in many cases.


--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
I enjoy the massacre of ads. This sentence will slaughter ads without
a messy bloodbath.

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.