XSLT能否插入当前日期?

XSLT能否插入当前日期?,xslt,xhtml,Xslt,Xhtml,我们在my office中使用的一个程序通过将它与XSLT文件一起导出的XML文件转换为XHTML来导出报告。我正在重写XSLT以更改格式并从源XML文件中添加更多信息 我想在最终报告中包括创建文件的日期。但原始XML文件中不包含当前日期/时间,我也无法控制XML文件的创建方式。XSLT中似乎没有构建任何返回当前日期的日期函数 有人知道如何在XSLT转换期间包含当前日期吗?XSLT 2 日期功能可在本机上使用,例如: <xsl:value-of select="current-dateT

我们在my office中使用的一个程序通过将它与XSLT文件一起导出的XML文件转换为XHTML来导出报告。我正在重写XSLT以更改格式并从源XML文件中添加更多信息

我想在最终报告中包括创建文件的日期。但原始XML文件中不包含当前日期/时间,我也无法控制XML文件的创建方式。XSLT中似乎没有构建任何返回当前日期的日期函数

有人知道如何在XSLT转换期间包含当前日期吗?

XSLT 2 日期功能可在本机上使用,例如:

<xsl:value-of  select="current-dateTime()"/>

对于MSXML解析器,请尝试以下操作:

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                xmlns:my="urn:sample" extension-element-prefixes="msxml">

    <msxsl:script language="JScript" implements-prefix="my">
       function today()
       {
          return new Date(); 
       } 
    </msxsl:script> 
    <xsl:template match="/">

        Today = <xsl:value-of select="my:today()"/>

    </xsl:template> 
</xsl:stylesheet>

今日职能(
{
返回新日期();
} 
今天=

同时阅读和

您是否可以控制转换的运行?如果是这样,您可以将当前日期传递给XSL,并从XSL内部使用$current date。下面是如何声明传入参数的,但由于知道如何运行转换,我无法告诉您如何传入值

<xsl:param name="current-date" />
然后,在xsl中,您可以使用:

<xsl:value-of select="$current-date"/>

。。。
xmlns:msxsl=“urn:schemas microsoft com:xslt”
xmlns:local=“urn:local”扩展元素前缀=“msxsl”>
公共字符串dateTimeNow()
{       
return DateTime.Now.ToString(“yyyy-MM-ddTHH:MM:ssZ”);
} 
...

参考资料:

迟交答案,但我的解决方案在EclipseXSLT中工作。在撰写本文时,Eclipse使用XSLT1。您可以安装类似Saxon的XSLT2引擎。也可以使用下面的XSLT1解决方案插入当前日期和时间

<xsl:value-of select="java:util.Date.new()"/>

这将调用Java的数据类来输出日期。除非您在
标记中添加以下“java:”定义,否则它将不起作用

<xsl:stylesheet [...snip...]
         xmlns:java="java"
         [...snip...]>


我希望这能帮助别人。这个简单的答案对我来说很难找到。

我不知道使用了什么解析器,这就是问题所在。我使用的程序直接导出报告,并使用其程序目录中的XSLT文件生成报告。这不适用于Apache FOP作为转换器。错误消息:今天对方法的实例方法调用需要一个对象实例作为第一个参数oops:extension-element-prefixes=“msxml”应该是extension-element-prefixes=“msxsl”。在我的系统上也无法工作。实际上,如何传递值取决于系统。一个可能的选项:在UNIX上,它可能是:
xsltproc--stringparam current date`date+%Y-%m-%d`-o output.html path-to.xsl path to.xml
。有些系统也只是将参数作为
$param=value
,因此在这种情况下,
$current date=`date+%Y-%m-%d`
。或者在您正在使用的任何XSLT处理器中寻找指定参数的方法。对于使用/的任何人,不要花费太多时间试图让EXSLT导入与标准的.NET XSLT转换器一起工作-立即使用。是的。
...
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:local="urn:local" extension-element-prefixes="msxsl">

    <msxsl:script language="CSharp" implements-prefix="local">
        public string dateTimeNow()
        {       
          return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ"); 
        } 
    </msxsl:script>  
...
    <xsl:value-of select="local:dateTimeNow()"/>
format-date(current-date(), '[M01]/[D01]/[Y0001]') = 09/19/2013
format-time(current-time(), '[H01]:[m01] [z]') = 09:26 GMT+10
format-dateTime(current-dateTime(), '[h1]:[m01] [P] on [MNn] [D].') = 9:26 a.m. on September 19.
<xsl:value-of select="java:util.Date.new()"/>
<xsl:stylesheet [...snip...]
         xmlns:java="java"
         [...snip...]>