我一直在嘗試將給定的dateTime轉換爲epoch時間,並且還給出了給定的epoch時間dateTime。我對xslt相當陌生,並且一直在努力爭取一段時間,但並沒有給我任何結果。這裏是我的XSLT到目前爲止dateTime到Epoch,反之亦然xslt
<xsl:stylesheet version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns0="http://www.NoPreAuth.org"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="xsi xsl ns0 xsd">
<xsl:template match="/">
<xsl:variable name="date1">
<xsl:value-of select="/ns0:NoAuthInput/ns0:StartDate"/>
</xsl:variable>
<xsl:variable name="date2">
<xsl:value-of select="/ns0:NoAuthInput/ns0:EndDate"/>
</xsl:variable>
<ns0:NoPreAuthInput>
<ns0:Product>
<xsl:value-of select="/ns0:NoAuthInput/ns0:Product"/>
</ns0:Product>
<!-- datTime to epoch -->
<ns0:END_T>
<xsl:value-of select= "(('$date1') - xsd:dateTime('1970-01-01T00:00:00')) div xsd:dayTimeDuration('PT1S') "/>
</ns0:END_T>
<!-- epoch To datTime -->
<ns0:Closed_T>
<xsl:value-of select= "(('$date2') + xsd:dateTime('1970-01-01T00:00:00')) * xsd:dayTimeDuration('PT1S') "/>
</ns0:Closed_T>
</ns0:NoPreAuthInput>
</xsl:template>
</xsl:stylesheet>
和我試圖將XML是:
<?xml version="1.0" encoding="UTF-8" ?>
<NoAuthInput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.NoAuth.org
xmlns="http://www.NoAuth.org">
<Product>ABC</Product>
<StartDate>2015-10-05T15:52:40.782</StartDate>
<EndDate>1444150760</EndDate>
</NoAuthInput>
任何幫助,在此深表感謝。由於
您需要使用像Saxon 9,XmlPrime或AltovaXML這樣的XSLT 2.0處理器來支持'dateTime'數據類型以及持續時間和計算。您使用的是XSLT 2.0處理器嗎?而XSLT代碼片段沒有聲明'xsd'前綴,所以我不認爲你的代碼會被編譯。爲了將你的輸入轉換成'dateTime',使用' ',那麼你可以使用'$ date'計算。 –
感謝Martin,實際上架構位置是一些本地文件到項目目錄,而且我使用的是xslt 2.0。我按照建議修改了代碼,但它說「錯誤:算術運算符沒有爲類型參數(xs:double,xs:dateTime)定義」。你能提出更多建議嗎? – Novice