|
Subject: Re: [xsl] Saxon extension functions From: Michel Hendriksen <michel.hendriksen@xxxxxxxxx> Date: Fri, 10 Dec 2010 15:33:12 +0100 |
Thnx. I guess some samples on the net could use an update.
Michel
On Fri, Dec 10, 2010 at 3:04 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> In XSLT 2.0, a call to an unknown function is a static error even if the
> call is never executed. You need to do the test in use-when, which operates
> at compile time:
>
> <xslt:template name="seed">
> <xslt:value-of use-when="function-available('date:new') and
> function-available('date:get-time')"
> xmlns:date="java:java.util.Date"
> select="date:get-time(date:new())"/>
>
> <xslt:value-of use-when="not(function-available('date:new') and
> function-available('date:get-time'))"
> xmlns:date="java:java.util.Date"
> select="seconds-from-duration(current-time() - xs:time('00:00:00'))"/>
>
> </xslt:template>
>
> Michael Kay
> Saxonica
>
>
> On 10/12/2010 12:38, Michel Hendriksen wrote:
>>
>> Hi all,
>>
>> New topic. I made an extension function which is working in SaxonB.
>> When porting this to SaxonHE, where it is not supported, I get an
>> error that a matching function cant be found. This is expected. But
>> I'm testing for support of this and that seems to pass. So how do I
>> test for existing support? See my code below.
>>
>> <xslt:template name="seed">
>> <!-- Works with SaxonB only! -->
>> <xslt:choose>
>> <xslt:when test="function-available('date:new') and
>> function-available('date:get-time')" xmlns:date="java:java.util.Date">
>> <xslt:variable name="date" select="date:new()"/>
>> <xslt:value-of select="date:get-time($date)"/>
>> </xslt:when>
>> <xslt:otherwise>
>> <!-- NOT random at all.....to be replaced by
>> something else -->
>> <xslt:variable name="time" select="current-time()"
>> />
>> <xslt:value-of select="seconds-from-time($time) +
>> 60 *
>> minutes-from-time($time) + 3600 * hours-from-time($time)"/>
>> </xslt:otherwise>
>> </xslt:choose>
>> </xslt:template>
>>
>> Error
>>
>> Error at xslt:variable on line 64 column 52 of selector.xsl:
>> XPST0017 XPath syntax error at char 0 on line 64 in {date:new()}:
>> Cannot find a matching 0-argument function named
>> {java:java.util.Date}new(). Note that
>> direct calls to Java methods are not available under Saxon-HE
>> Error at xslt:value-of on line 65 column 50 of selector.xsl:
>> XPST0017 XPath syntax error at char 0 on line 65 in
>> {date:get-time($date)}:
>> Cannot find a matching 1-argument function named
>> {java:java.util.Date}get-time(). Note
>> that direct calls to Java methods are not available under Saxon-HE
>>
>> line 64/65 are
>>
>> <xslt:variable name="date" select="date:new()"/>
>> <xslt:value-of select="date:get-time($date)"/>
>>
>> So within test.
>>
>> Michel Hendriksen
>> Kensas bv
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Saxon extension functions, Michael Kay | Thread | [xsl] template match question, Ciarán Ó Duibhín |
| Re: [xsl] Random number seed genera, Michel Hendriksen | Date | Re: [xsl] Random number seed genera, TW |
| Month |