我正在尝试使用 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 进行简单的日期/时间算术变得没有必要。