2015-07-03 219 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