2010-07-18 18 views
1

我需要使用xslt將默認的mysql modtimes轉換爲UTC格式的日期時間。如何使用xslt將默認的mysql modtimes轉換爲UTC日期時間

我有一個包含日期,在格式最初是作爲MySQL的modtimes XML文檔: 2010-06-30 15:20:43.0

他們現在是一個元素中的一個XML文檔中的「時間戳」 2010-03-16 13:52: 2010-06-30T15:20:43Z

ISO 8601 56.0

爲了經由它們需要被轉換爲UTC格式的OAI-PMH飼料被公開UTC日期在這裏定義: http://www.w3.org/TR/NOTE-datetime

我沒有訪問原始mysql數據庫,只有一個xml轉儲。

+0

好問題(+1)。查看我的答案,瞭解簡單的XSLT(和單線程XPath)解決方案。 :) – 2010-07-18 01:49:55

回答

2

這種轉變

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="text()"> 
    <xsl:value-of select= 
    "concat(
      translate(substring-before(.,'.'), 
        ' ', 
        'T' 
        ), 
      'Z' 
      ) 
    "/> 
</xsl:template> 
</xsl:stylesheet> 

當這個XML文檔施加:

<oai:datestamp xmlns:oai="some:ns">2010-03-16 13:52:56.0</oai:datestamp> 

產生想要的,正確的結果

<oai:datestamp xmlns:oai="some:ns">2010-03-16T13:52:56Z</oai:datestamp> 

請注意:使用單個XPath表達式將值轉換爲想要的格式,這就是爲什麼我添加了標記xpath的原因。

+0

這是一種享受!非常感謝你 – Bris 2010-07-18 03:24:15

相關問題