Subject: RE: XSLT function optimization - datetime comparisons?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 22 Sep 2005 12:39:37 +0100
|
The reason it doesn't work in Xalan is that xsl:function is an XSLT 2.0
construct, and Xalan doesn't support XSLT 2.0.
It's probably marginally faster to use Saxon's native dateTime support, but
I doubt it makes a very big difference:
<xsl:function name="my:compDate" as="xs:boolean">
<xsl:param name="dt_a" as="xs:string" />
<xsl:param name="dt_b" as="xs:string" />
<xsl:sequence select="xs:dateTime(dt_a) gt xs:dateTime(dt_b)"/>
</xsl:function>
This isn't 100% identical, for example Saxon will throw a wobbly if the date
is 2005-02-29.
Note that you could use the <xsl:sequence select="(boolean expression)"/> in
your version as well.
Also, you could get rid of all three punctuation characters in a single call
on translate.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Jeffrey Schrab [mailto:jschrab@xxxxxxxxxxxx]
> Sent: 21 September 2005 20:53
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: XSLT function optimization - datetime comparisons?
>
> I don't profess to be well seasoned in XSLT. Simply put I
> have a function that I call an awful lot in stylesheet. I'm
> wondering if I'm being very inefficient about how it's coded.
> Does anyone have any comments how best to do the comparison
> that I'm doing below for datetimes of the form YYYY-MM-DDTHH:MM:SS ?
>
> I'm using Saxon - I found that Xalan (2.7) just couldn't do
> this sort of thing for reasons I don't understand to this day.
>
>
> <xsl:function name="my:compDate" as="xs:boolean">
> <xsl:param name="dt_a" as="xs:string" />
> <xsl:param name="dt_b" as="xs:string" />
> <xsl:choose>
> <xsl:when test="
> xs:integer(translate(translate(translate($dt_a,'-',''),'T','')
> ,':','')) gt
> xs:integer(translate(translate(translate($dt_b,'-',''),'T','')
> ,':',''))">
> <xsl:copy-of select="true()"/>
> </xsl:when>
> <xsl:otherwise>
> <xsl:copy-of select="false()"/>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:function>
>
> --
> Jeffrey Schrab
> Internet Application Developer
>
> GS Design
> 6665 N. Sidney Place
> Milwaukee, WI 53209
>
> P: 414.228.9666
> F: 414.228.9652
> E: jschrab@xxxxxxxxxxxx http://www.gsdesign.com
|