2012-08-03 83 views
2

我一直在使用Microsoft XSLT(1.0)中的擴展進行實驗。在JavaScript函數中,我只是試圖返回當前的ISO日期和時間。聽起來很簡單。XSLT JavaScript擴展無法調用Date()。toISOString()

<?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
          xmlns:ms="urn:schemas-microsoft-com:xslt" 
          xmlns:util="urn:Utility" extension-element-prefixes="ms" 
          > 
    <xsl:output method="html" version="1.0"/> 
    <ms:script language="javascript" implements-prefix="util"> 
    function today() 
    { 
     var d = new Date(); 
     return d.toISOString(); 
    } 
    </ms:script> 
    <!-- =============================================================== --> 
    <xsl:template match="Person"> 
     <xsl:value-of select="util:today()"/> 
    </xsl:template> 
    </xsl:stylesheet> 

當您執行上述操作時,它返回「功能預期」。根據微軟公司的文檔toISOString假設爲JavaScript Date()對象。如果我使用toGMTString()它會返回GMT值。我真的需要以ISO格式返回的當前日期。

任何想法?

+0

['.toISOString'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/toISOString)不支持的<= IE8 – Esailija 2012-08-03 14:27:37

回答

1

toISOString()不是the original jScript Date object的財產。

它支持IE9 +,甚至在standards rendering mode only

試試這個。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ms="urn:schemas-microsoft-com:xslt" 
    xmlns:util="urn:Utility" 
    extension-element-prefixes="ms" 
> 
    <xsl:output method="html" version="4.0" /> 

    <ms:script language="jscript" implements-prefix="util"> 
    <![CDATA[ 
    function isoDate() { 
    var d = new Date(); 
    return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) 
      + 'T' 
      + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) 
      + '.000Z'; 
    } 

    function pad(num) { 
    return (num < 10) ? '0' + num : '' + num; 
    } 
    ]]> 
    </ms:script> 

    <xsl:template match="/"> 
    <xsl:value-of select="util:isoDate()"/> 
    </xsl:template> 
</xsl:stylesheet> 
+0

我將連接到http:/ /msdn.microsoft.com/en-us/library/yek4tbz0%28v=vs.84%29作爲IE <= 8中使用的JScript腳本引擎的文檔,並由MSXML在「ms:script」部分中使用。鏈接http://msdn.microsoft.com/en-us/library/xby9ffhf.aspx指向JScript.NET版本的JScript,即.NET框架中的ECMAScript實現。 – 2012-08-03 17:31:31

+0

@Martin絕對。我的不好,鏈接固定在答案。 – Tomalak 2012-08-03 17:34:34

+0

感謝您的回覆。我已經編寫了一些與你的例子非常相似的東西。這似乎是這個標準將成爲Date對象的一部分。 – 2012-08-06 13:29:35