This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
XSL Transformations Requirements Version 1.1 - a crazy idea?
- To: XSL-List <xsl-list at mulberrytech dot com>
- Subject: XSL Transformations Requirements Version 1.1 - a crazy idea?
- From: Francis Norton <francis at redrice dot com>
- Date: Tue, 05 Sep 2000 09:44:35 +0100
- Reply-To: xsl-list at mulberrytech dot com
The Requirements Document contains a reuirement for Portable Extension
Functions Implementations
(
http://www.w3.org/TR/2000/WD-xslt11req-20000825#section-Requirements-for-Portable-Extension-Function-Implementations
).
This discusses ways to make sure that extensions in Java or EcmaScript
will be portable between XSLT implementations, while specifically making
support for extensions in *any* language an optional feature.
The "Crazy Idea" thread from September 1999 came up with some
interesting ideas for allowing extension functions in XSLT itself - for
example, James Clark's reply:
<quote
src="http://www.mulberrytech.com/xsl/xsl-list/archive/msg05080.html">
> I was thinking of an extension to XSLT (I know, it's too late for this
> version).
>
> Something like:
>
> <xsl:function name="reverse" namespace:fn="www.redrice.com">
> <xsl:param name="string" />
> <xsl:if test="$string">
> <xsl:value-of select="fn:reverse(substring($string,2))" />
> </xsl:if>
> <xsl:value-of select="substring($string,1,1)" />
> </xsl:function>
>
> so I could then call it with
>
> <xsl:stylesheet indent-result="yes" default-space="strip"
> xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
> xmlns:fn="www.redrice.com">
>
> ...
>
> <xsl:value-of select="fn:reverse('able was I ere I saw Elba')" />
The trouble with that is that functions would only be able to return
result tree fragments. I had been thinking of something like:
<xsl:variable name="reverse"
select="function($s)
(concat($s ? $reverse(substring($s,2)) : '',
substring($s,1,1)))"/>
<xsl:value-of select="$reverse('able was I ere I saw Elba')"/>
Something like you suggest would be useful too (I would think of it as a
way to call named templates from functions).
There are plenty of interesting possibilities for XSLT/XPath v2.
James
</quote>
If such a proposal was easy to implement, and could be shown to be
"syntax sugar" - then would it not be a good idea to specify and indeed
mandate it for XSLT 1.1 as the ultimate in portable extension function
support?
Francis.
--
Francis Norton.
Defy Convention? Deify Convention!
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list