如何在XSLT中执行Java函数



我正在尝试使用 XSLT 文件中的 java 命名空间获取日期,并从中减去 X 天。如何在 xslt 中减去从日期开始的天数?

我尝试使用 java 命名空间来获取当前日期并使用java.time.LocalDate.now((.minusDays(2( the days.它在java中工作正常,但在xslt中它失败了

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                              xmlns:xs="http://www.w3.org/2001/XMLSchema"
                              xmlns:java="http://xml.apache.org/xslt/java" 
                              xmlns:xalan="http://xml.apache.org/xalan"
                              xmlns:fn="http://www.w3.org/2005/xpath-functions"
                              xmlns:datetime="http://exslt.org/dates-and-times"
                              xmlns:math="http://exslt.org/math"
                              xmlns:date="http://www.date.org/"
                              xmlns:exslt="http://exslt.org/common"
                              xmlns:js="javascript:code"
                              exclude-result-prefixes="java"
                              extension-element-prefixes="mcr">
    <xsl:variable name="test" select="java:java.time.LocalDate.now().minusDays(2)"/>

当我在选择中仅使用"java:java.time.LocalDate.now(("时,我正在获取今天的日期作为输出。只有 minusDays(( 函数似乎不起作用。

我期待当前日期减去 2 天的输出采用 yyyy-MM-dd 格式。例如:如果今天的日期是2019年6月12日产量 : 2019-06-10

这是一个有效的 XPath 函数调用:java:java.time.LocalDate.now((,Xalan 将其解释为对外部 Java 静态方法的调用。

然后用"."跟上。但是 "." 在 XPath 中不是有效的运算符。如果要将一个 XPath 函数F()应用于另一个函数G()的结果,则不能使用 Java 语法F().G(),必须使用 XPath 语法G(F())。这意味着您需要使用与 minusDays(( 对应的完全限定函数名称。

由于您使用的是 Java,因此您可以切换到 Saxon,它支持 XSLT 2.0 中内置的所有日期和时间函数,因此所有这些调用 Java 进行简单的日期/时间算术变得没有必要。

相关内容

  • 没有找到相关文章

最新更新