我一直在尝试将给定的日期时间转换为纪元时间,以及将给定的纪元时间转换为日期时间。我对xslt还很陌生,已经苦苦挣扎了一段时间,但是它没有返回任何结果。以下是我的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>
非常感谢您能提供任何关于此的帮助。谢谢。
dateTime
数据类型以及持续时间和计算。你正在使用XSLT 2.0处理器吗?而且XSLT片段没有声明xsd
前缀,所以我认为你的代码不会编译。要将输入转换为dateTime
,请使用<xsl:variable name="date1" select="xsd:dateTime(/ns0:NoAuthInput/ns0:StartDate)"/>
,然后您可以使用$date
进行计算。 - Martin Honnen