2011-01-19 56 views
0

下面的代码EXSLT模板日期:格式日期模板日期后工作不正确:添加

<td> 
    <xsl:call-template name="date:add"> 
     <xsl:with-param name = "date-time" select ="hml:LT" /> 
     <xsl:with-param name = "duration" select = "'PT1H'" /> 
    </xsl:call-template> 
    </td> 
    <td> 
    <xsl:call-template name="date:format-date"> 
     <xsl:with-param name = "date-time" select ="hml:LT" /> 
     <xsl:with-param name = "pattern" select = "'dd, MMM yyyy'" /> 
    </xsl:call-template> 
    </td> 

输出像

<td>2011-01-18T07:27:24-00:00</td><td>18, 2011</td> 

第二单元不包含月份的名称(MMM在模式)

在低于同一时间的代码工作正常

<td> 
    <xsl:call-template name="date:format-date"> 
     <xsl:with-param name = "date-time" select ="hml:LT" /> 
     <xsl:with-param name = "pattern" select = "'dd, MMM yyyy'" /> 
    </xsl:call-template> 
    </td> 

即无日期:添加调用之前我在输出得到正确的日期:

<td>18, Jan 2011</td> 

难道缺陷EXSLT?或者我做错了什么?

我使用XSLT的EXSLT扩展,并导入了所有必需的模板。

下面是测试文件全文: XSLT:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:date="http://exslt.org/dates-and-times" 
    xmlns:hml="http://schemas.test/hml" 
    extension-element-prefixes="date" 
    exclude-result-prefixes = "hml" 
    > 

<xsl:import href="date.add.template.xsl" /> 
<xsl:import href="date.format-date.template.xsl" /> 
<xsl:import href="str.padding.template.xsl" /> 


<xsl:output omit-xml-declaration="yes" /> 
<xsl:output method="html" indent="no" /> 

<xsl:template match="/"> 
    <td> 
    <xsl:call-template name="date:add"> 
     <xsl:with-param name = "date-time" select ="hml:LT" /> 
     <xsl:with-param name = "duration" select = "'PT1H'" /> 
    </xsl:call-template> 
    </td> 
    <td> 
    <xsl:call-template name="date:format-date"> 
     <xsl:with-param name = "date-time" select ="hml:LT" /> 
     <xsl:with-param name = "pattern" select = "'dd, MMM yyyy'" /> 
    </xsl:call-template> 
    </td> 
    </xsl:template> 
</xsl:stylesheet> 

和XML:

<hml:LT xmlns:hml="http://schemas.test/hml">2011-01-19T02:16:06-00:00</hml:LT> 
+0

您使用哪种版本的XSLT处理器?请提供一些输入样本,以便我们重现问题。 – 2011-01-19 11:39:28

+0

增加了对输入XML和XSLT的完整测试。至于XSLT处理器 - 它是Apache Xalan,它包含在Websphere 5 – Mikhail 2011-01-19 12:04:31

回答

0

我撒克逊6.5.5和xsltproc的Windows上测试了样品和输出两次如下:

<td>2011-01-19T03:16:06-00:00</td><td>19, Jan 2011</td> 

所以我不认为有一个问题与templ对于我从http://www.exslt.org/获取的EXSLT函数,如果在某些版本的Xalan中没有获得正确的输出,它看起来更像是一个Xalan错误。