Subject: Re: [xsl] Nicer way to change context-node than xsl:for-each ? From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Sat, 5 Dec 2009 07:55:35 -0800 |
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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Nicer way to change conte, Mukul Gandhi | Thread | Re: [xsl] Nicer way to change conte, Mukul Gandhi |
Re: [xsl] Nicer way to change conte, Mukul Gandhi | Date | Re: [xsl] Nicer way to change conte, Mukul Gandhi |
Month |