我有一个 xslt,我想得到“今天 + 10 年(以毫秒为单位)”
Date today = new Date();
Date tenYears = new Date(today.getTime() + 1000*3600*24*365*10);
现在我想在 xslt 中使用它:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:java="java">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<value><xsl:value-of select="java:util.Date.new()"/></value>
</xsl:template>
行
<xsl:value-of select="java:util.Date.new()"/>
有效,但是当我尝试时
<xsl:value-of select="java:util.Date.new().getTime()"/>
失败了,我该怎么办?
最佳答案
我认为您可以使用 Xalan
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:java="http://xml.apache.org/xalan/java" exclude-result-prefixes="java">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<value>
<xsl:variable name="today" select="java:java.util.Date.new()"/>
<xsl:variable name="tenYears"
select="java:java.util.Date.new(java:getTime($today) + 1000 * 3600 * 24 * 365 * 10)"/>
<xsl:value-of select="$tenYears"/>
</value>
</xsl:template>
</xsl:stylesheet>
请参阅 http://xml.apache.org/xalan-j/extensions.html#java-namespace 处的文档请注意,其他 XSLT 处理器实现可能具有不同的调用 Java 的机制。
关于xslt中的java函数getTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37027547/