xsl-list
[Top] [All Lists]

What is exciting in XSLT 2.0 (Was: Re: [xsl] parameters in XSLT 2.0)

2005-06-08 04:37:29
With the introduction of xsl:function in XSLT 2.0 there are a number
of extremely interesting and important topics that are now becomming
more relevant but (I wonder why), are rarely discussed on this list.

   Function overloading -- limitations and how to overcome them.

   Parameter typing -- specific vs more general types, polymorhism,
how to determine dynamically the type of an actual argument, passing
functions as parameters.

   Function return type -- same as above plus returning a function as
the result, plus non-pure functions.

  Sequences  -- serialization/deserialization.

  Higher-order functions, partial application, controlling the
sequence of evaluation.

  Memoisation.

   Function libraries (it's a pity we can't have them in compiled form)

  Modelling the "continuation-passing" style.


Isn't this breathtaking!


Cheers,
Dimitre Novatchev
  





On 6/8/05, Michael Kay <mike(_at_)saxonica(_dot_)com> wrote:
First, am I right that if I use an "as" attribute of element() or
node() I am passing a reference to the original element or node, and
thus that this is an efficient operation?

In the examples below you are passing a reference. If you used xsl:copy-of
rather that xsl:sequence you would be creating a copy.

The effect of using "as" on performance may be positive or negative. It may
cause the system to do run-time checks that would otherwise not be
performed. On the other hand, it gives the system compile-time information
that may be useful to perform optimizations. I would use it as widely as
possible because it speeds the development cycle and catches bugs more
efficiently, and not worry too much about any effect on performance.


Related, am I correct that these below are equivalent from a
processing
standpoint?

<xsl:variable name="foo" select="bar" as="element()"/>

<xsl:variable name="foo" as="element()">
   <xsl:sequence select="bar"/>
</xsl:variable>

Yes.

Finally, in general, under what conditions should one use tunnel
parameters?  I do a lot of parameter passing in my
stylesheets, though
the content of those parameters is typically fixed.


Use them if A calls E via B, C, and D, and you want to get information from
A to E without cluttering the code of templates B, C, and D. The most likely
use-case for this is if you are reusing existing templates B, C, and D and
want to reuse them unchanged.

Michael Kay
http://www.saxonica.com/




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--