Subject: Re: [xsl] Re: Designs for XSLT functions (Was: Re: RE: syntax sugar for call-template) From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Tue, 20 Feb 2001 11:46:59 +0000 |
Hi Dimitre, > I see... Then somePrefix:fn() What is different in exsl:function() > vs. my:func() ??? They seem the same to me. exsl:function() is a generic function for dynamically calling any function at all by name. my:func() is a particular extension function that I want to call. So strictly: my:func() is equivalent to: exsl:function('my:func') or to adopt your naming scheme: exsl:fn('my:func') >> >> 2.b. Passing parameters by position vs. name >> > >> > >> > fn(QName, p1="Name1 Value1",..., pN="NameN ValueN") >> > >> > This allows parameters to be passed by name (as above), >> >> This is a syntax that isn't allowed in XSLT 1.0. That's not to say >> that it wouldn't be a useful syntax to have, just that *we* cannot >> make that change. > > OK, > But the following is allowed, isn't it? > > x:fn(QName, "Name1 Value1",..., "NameN ValueN") > > Variations of this allow for passing by name -- only, passing by > position only, or a mixture of passing by name and passing by > position. Yes, and it would be a very interesting way of calling functions, in particular because the expressions for getting their values could be constructed as strings. As Mike pointed out, if you have a static method like: my:func(value1, value2) then with a exsl:evaluate() function you could do: exsl:evaluate("my:func(value1, value2)") to get the same effect. That way you can construct anything on the fly. However, if we *only* have exsl:evaluate() then unless we allow passing by name within the static method (which I guess is a possibility), then we won't be able to allow access by name within the dynamic method. I personally think that a function for dynamic invocation of functions would be more helpful. Your method above is good because, as you say, you can pass by position or by name (I'm not sure how you get the two to mix - perhaps you can expand on that?). This means that unlike the method that Uche and I were talking about: exsl:call('my:func', 'Name1', Value1, 'Name2', Value2) it could also be applied to existing XPath functions that do not have a concept of 'named' arguments, only positional ones. For example, with your method you could do: x:fn('substring-before', '$string', '$char') Whereas with the method Uche and I were talking about you'd be stuck. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Re: Designs for XSLT func, Dimitre Novatchev | Thread | Re: [xsl] Re: Designs for XSLT func, Uche Ogbuji |
Re: Designs for XSLT functions (Was, David . Rosenborg | Date | [xsl] xsl:when, Jo Kong HO |
Month |