This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: XSLT 1.1 comments -Examples please
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] XSLT 1.1 comments -Examples please
- From: David Carlisle <davidc at nag dot co dot uk>
- Date: Thu, 15 Feb 2001 13:01:41 GMT
- References: <9B66BBD37D5DD411B8CE00508B69700F4F0225@pborolocal.rnib.org.uk>
- Reply-To: xsl-list at lists dot mulberrytech dot com
> 1. A usage illustrating portability. Say get and re-format the date
> in ecmascript, which could also use a java extension, as per DC comment.
> - Regularly asked for? Reasonably 'safe'.
I just posted this off list to someone, may as well repost here (the
actual method and class names don't work, but the basic
principle I hope is clear)
David
If you have a web form on which you get a date in the local language
settings and want to know if it is within a month of today, are you
really going to write a recursive xslt extension function to do that
or use a couple of lines to an extension language with built in locale
aware date handling? More than anyone I've argued for the benefits of
the functional approach, but I know which I would do. (Until XSLT n+1
when the feature gets added to XSLT)
Using xsl:script you can implement a date:number-of-days-between(a,b)
function that works for any XSLT 1.1 implementation that supports
javascript or vbscript or java. I don't think you can do that
in xslt 1.0 in any reasonable way.
in xslt 1.1 you make date: point of at any unique URI and then give
multiple xsl:script to bind that URI to date related methods in whatever
target languages you are using.
in XSLT 1.0 you have to make date: point to a URI that is an xsl engine
specific prefix followed by a URI using the java class name, so it only
works on one engine, not even all the java ones.
xmlns:date="http://www.oracle.com.XSL/Transform/java/java.util.Date
(if java.util.date had a method of that name, which it probably doesn't)
This is what xsl:script is trying to avoid.
It means I can use
<xsl:value-of select="date:number-of-days-between($a,$b)"/>
rather than the XSL 1.0 equivalent
<xsl:choose>
<xsl:when test="function-exists('xt:number-of-days-between')">
<xsl:value-of select="xt:number-of-days-between($a,$b)"/>
</xsl:when>
<xsl:when test="function-exists('saxon:number-of-days-between')">
<xsl:value-of select="saxon:number-of-days-between($a,$b)"/>
</xsl:when>
<xsl:when test="function-exists('xalan:number-of-days-between')">
<xsl:value-of select="xalan:number-of-days-between($a,$b)"/>
</xsl:when>
<xsl:when test="function-exists('msxsl:number-of-days-between')">
<xsl:value-of select="msxsl:number-of-days-between($a,$b)"/>
</xsl:when>
which is crazy, especialy given that the first three areeven using the
same class, thus the same code, just specified differently.
_____________________________________________________________________
This message has been checked for all known viruses by Star Internet delivered
through the MessageLabs Virus Control Centre. For further information visit
http://www.star.net.uk/stats.asp
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list