1

设置: Apache Xalan 2.7.1

输入 :

<?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 解决方案。

4

1 回答 1

0

我无法弄清楚为什么时间没有与日期一起被解析。

AFAICT,它对您不起作用的原因是提供的日期/时间字符串不是函数接受的定义格式之一 - 请参阅:http ://exslt.org/date/functions/format-date/索引.html

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

只有 xslt 1.0 解决方案可以应用。

我不确定您在这里寻找什么样的解决方案。提供的字符串已经是所需的格式,除了缺少的秒部分,所以你可以简单地输出:

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

无需任何扩展。


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

于 2015-07-03T10:36:20.180 回答