Использование неосновных функций даты EXSLT с Xalan Java

У меня были основные функции даты EXSLT, работающие хорошо в некоторых шаблонах XSL, которые я использовал в течение многих лет. Я хотел бы начать использовать новый:seconds, Эта функция не является одной из «основных» функций, и поэтому реализации могут требовать соответствия с EXSLT без фактической реализации.

Я использую Cocoon 2.1.11 с Xalan 2.7.1, который, кажется, решил не реализовыватьdate:seconds.

К счастью, добрые люди из EXSLT предоставляют загрузки, чтобы помочь вам подключить отдельные функции, но я не могу понять, как на самом деле создать этот плагин.

Я могу легко использовать основные функции, используя этот шаблон, например:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:date="http://exslt.org/dates-and-times" >
  <xsl:template match="/">
    <xsl:value-of select="date:date-time()" />
  </xsl:template>
</xsl:stylesheet>

При попытке использоватьdate.seconds Функция, я попробовал следующее:

Просто добавив<xsl:import href="date.seconds.xsl" /> на мой шаблон, и с помощьюdate:seconds(), Это возвращает мне сообщение об ошибке «Для функции расширения не удалось найти метод org.apache.xalan.lib.ExsltDatetime.seconds»Удалениеxmlns:date как показано выше. Это приводит меня к ошибке "Префикс должен разрешаться в пространство имен: дата"Размещение содержимогоdate.seconds.xsl в шаблоне я пытаюсь написать, затем звонюdate:seconds() без аргументов (по умолчанию определено использование текущего времени). Я получаю это сообщение об ошибке: «Для вызова метода экземпляра секунд метода требуется экземпляр объекта в качестве первого аргумента». Сейчас это выглядит многообещающе.Добавление аргумента вdate:seconds, Я получаю сообщение об ошибке: «Для функции расширения не удалось найти метод java.lang.String.seconds ([ExpressionContext,])»

Любые предложения о том, как использовать эту неосновную функцию EXSLT?

Вот мой текущий шаблон, все еще говорящий мне, что он пытается вызватьjava.lang.String.seconds():

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:func="http://exslt.org/functions"
    xmlns:date="http://exslt.org/dates and times">
  <xsl:import href="date.seconds.xsl" />
  <func:script language="exslt:javascript" implements-prefix="date" src="date.js"/>
  <func:script language="exslt:msxsl" implements-prefix="date" src="date.msxsl.xsl"/>

  <xsl:template match="/">
    <xsl:value-of select="date:seconds('2014-02-27')" />
  </xsl:template>
</xsl:stylesheet>

Ответы на вопрос(2)

Ваш ответ на вопрос