2015-07-03 224 views
0

设置:的Apache的Xalan 2.7.1EXSLT:日期:格式日期:解析日期,而不是解析时间

输入:

<?xml version="1.0" encoding="UTF-8"?> 
<r> 
    <generated_date>2015-07-03 11:48</generated_date> 
</r> 

XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:xdt="http://exslt.org/dates-and-times" 
      exclude-result-prefixes="xdt"> 
      <xsl:variable name="generated-date" select="xdt:format-date(//generated_date,'YYYY-MM-dd hh:mm:ss')"  /> 

     <xsl:template match="/"> 
      <xsl:value-of select="$generated-date"/> 
     </xsl:template> 
</xsl:stylesheet> 

输出:

<generated_date>2015-07-03 12:00:00</generated_date> 

问:为什么我无法弄清楚,为什么时间没有被全部随着日期解析。时间应该是平等的11:48:00。


注:只有XSLT 1.0解决方案可以适用。

回答

0

我想不通为什么时间没有全部用 日期进行解析。

AFAICT,为什么它不为你工作是提供的日期/时间字符串是不是在定义的格式一个函数接受 - 见:http://exslt.org/date/functions/format-date/index.html

如果要格式化提供的字符串必须格式化为YYYY-MM-DDThh:mm:ss - 也就是使用T作为日期和时间之间的分隔符,并包括时间部分中的秒数。看到它的工作这里:http://xsltransform.net/6qVRKwS

只有XSLT 1.0解决方案可以适用。

我不知道你在这里寻找什么样的解决方案。提供的字符串已经处于所需的格式,除了丢失的秒部分外,您可以简单输出:

<xsl:value-of select="concat(given-date,':00')"/> 

而不需要任何扩展名。


(1)注意,没有一个主要XSLT 1.0处理器支持EXSLT format-date()功能 - 这包括的Xalan 2.7.1。虽然它似乎在工作,但正式的功能不可用 - 请参阅:http://xsltransform.net/6qVRKwS/1