RE: [xsl] Accessing context from xsl:function body

Subject: RE: [xsl] Accessing context from xsl:function body
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 8 Nov 2007 09:47:22 -0000
> Why does XSLT 2.0 language prohibits xsl:function to access 
> the context information?

It makes static analysis and optimization a lot easier if all the parameters
to a function are explicit. Otherwise you find yourself passing information
to a function just in case it needs it. 

Consider last(), which is probably the most extreme case. When using
apply-templates, you don't know statically what templates are going to be
called and you don't know whether they will call last() or not. So the
caller has to do a lot of just-in-case preparation, which will usually be
wasted.
> 
> On the contrary, the named template can access the context 
> information. Why is this difference in capability on named 
> template, and xsl:function?

History. One was designed with the benefit of hindsight.
> 
> Is there any use case, where xsl:function body would really 
> need the context information? Is there a merit in the 
> argument, to provide this capability to xsl:function?
> 
If the function needs the information, it can define it as an explicit
parameter.

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

Current Thread