2011-12-29 116 views
2

我有一个标准ISO 8601格式的日期的XML文档。就像这样:使用XSLT将XML中的dateand转换为UTC时区

 

2011-11-29T04:15:22-08:00 

我想的时间为UTC,并在下面的表格使用XSLT输出转换日期:

 

2011-11-29 12:15:22 

如何能不能做到?

在此先感谢。

回答

0

XSLT-1.0没有日期格式化功能。

因此,你必须与它的工作与文字 - 见相关的问题Format a date in XML via XSLT

其他可能的方法是创建扩展功能(见@ 0xA3执行答案同样的问题在MSXSL和.Net的情况下)

7

以下XPath 2.0表达产生的期望字符串值

translate(
    string(
     adjust-dateTime-to-timezone(
      xs:dateTime('2011-11-29T04:15:22-08:00'), 
      xs:dayTimeDuration('PT0H') 
          ) 
     ), 
    'TZ', 
    ' ' 
      ) 

XSLT - 基于验证

<xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:template match="/"> 
    <xsl:sequence select= 
    "translate(
     string(
      adjust-dateTime-to-timezone(
       xs:dateTime('2011-11-29T04:15:22-08:00'), 
       xs:dayTimeDuration('PT0H') 
           ) 
      ), 
     'TZ', 
     ' ' 
       ) 
    "/> 
</xsl:template> 
</xsl:stylesheet> 

当这种转化是在任何XML文档(未使用),XPath表达式求值和该评价的结果是施加输出

2011-11-29 12:15:22