我一直在尝试将给定的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