Использование неосновных функций даты 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>