2

私は、 Microsoft XSLT (1.0)で拡張機能を使用して実験してきました。JavaScript 関数では、現在の ISO の日付と時刻を返そうとしています。簡単に聞こえます。

    <?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>

上記を実行すると、「Function expected」が返されます。Microsoft のドキュメントによるとtoISOString、JavaScriptDate()オブジェクトが想定されています。使用するtoGMTString()と、GMT 値が返されます。ISO形式で返される現在の日付が本当に必要です。

何か案は?

4

1 に答える 1

1

toISOString()元の jScript Date オブジェクトのプロパティではありません。

IE9+ でサポートされており、標準レンダリング モードでのみサポートされています。

これを試して。

<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>
于 2012-08-03T14:41:55.947 に答える