XSLT是否可以插入当前date?

我们在办公室使用的程序通过将XSLT文件导出的XML文件翻译成XHTML来导出报告。 我正在重写XSLT以更改格式并从源XML文件添加更多信息。

我想在最终报告中包含文件的创builddate。 但是,当前的date/时间不包含在原始XML文件中,也不能控制如何创buildXML文件。 似乎没有任何datefunction被构build到XSLT中,将返回当前date。

有没有人有任何想法如何我可以包括在我的XSLT转换当前date?

XSLT 2

date函数本地可用,例如:

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

还有current-date()current-time()

XSLT 1

使用EXSLTdate和时间扩展包。

  1. 从GitHub下载date和时间包。
  2. date.xsl提取到XSL文件的位置。
  3. 设置样式表头。
  4. 导入date.xsl

例如:

 <xsl:stylesheet version="1.0" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date" ...> <xsl:import href="date.xsl" /> <xsl:template match="//root"> <xsl:value-of select="date:date-time()"/> </xsl:template> </xsl:stylesheet> 

对于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> 

另请阅读使用msxsl脚本的XSLT样式表脚本和使用JScript,C#和Visual Basic .NET扩展XSLT

你有控制运行转换吗? 如果是这样,您可以将当前date传递给XSL并在XSL中使用$ current-date。 下面是你如何声明传入的参数,但知道你如何运行转换,我不能告诉你如何传递的价值。

 <xsl:param name="current-date" /> 

例如,从bash脚本中,使用:

 xsltproc --stringparam current-date `date +%Y-%m-%d` -o output.html path-to.xsl path-to.xml 

然后,在xsl中,您可以使用:

 <xsl:value-of select="$current-date"/> 
 ... 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 am on September 19. 

参考: 使用XSLT 2.0和XPath格式化date和时间

迟到的答案,但我的解决scheme在Eclipse XSLT中工作。 在撰写本文时,Eclipse使用XSLT 1。 您可以安装像Saxon这样的XSLT 2引擎。 或者,您可以使用下面的XSLT 1解决scheme来插入当前的date和时间。

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

这将调用Java的Data类来输出date。 除非您还在<xsl:stylesheet>标记中添加以下“java:”定义,否则它将不起作用。

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

我希望能帮助别人。 这个简单的答案很难find我。