使用XSLT计算XML中两个日期的天数

Deu*_*ion 6 xml xslt date

我已经进行了大约5个小时了,尝试在Google上找到的每个例子都有serach术语"xml xslt计算日期之间的天数"我可以找到从"date.xml"文件中取两个日期并以"YYYY-MM-DD"格式计算日期之间的天数(以下示例没有此格式,但这是我需要的唯一格式)

我终于找到了这个页面:: https://forums.oracle.com/thread/2432132

可在以下位置验证解决方案:http://xslttest.appspot.com/

但是,在localhost上保存"date.xml/date.xslt"试图在Internet Explorer,谷歌浏览器或Firefox中打开页面要么显示错误,要么根本没有显示错误,因为它似乎总是 - 没有任何信息是错误的.当文件在Web服务器上时也会发生同样的情况.

那么,为什么我不能尝试一个简单的例子,我发现每个人都说有解决方案或我做错了什么?

上面示例中的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="date.xslt"?>

<root>
    <date1>2012-01-11T00:00:00.000-05:00</date1>
    <date2>2012-01-15T00:00:00.000-05:00</date2>
</root>
Run Code Online (Sandbox Code Playgroud)

上面例子中的XSLT文件:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet  version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:fn="http://www.w3.org/2005/xpath-functions">

<xsl:template match="/">
    <xsl:variable name="date1" select="xs:dateTime(/root/date1)"/>
    <xsl:variable name="date2" select="xs:dateTime(/root/date2)"/>
    <xsl:value-of select="fn:days-from-duration($date2 - $date1)"/>
</xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

将此添加到XSLT验证程序,它会在这两个日期之间显示正确的值"4"天.

我希望能够创建一个实际上可以进行计算的文档,无论它们是日期还是数字,但此时似乎是不可能的.获取日期数,然后使用该值进行一些计算.

Mar*_*nen 3

您的样式表使用 XSLT 2.0 版,浏览器仅支持 XSLT 1.0 版。XSLT 1.0 版不支持类似的数据类型xs:dateTime和类似的函数。days-from-duration因此,您需要使用 XSLT 2.0 处理器(例如 Saxon 9(针对 Java 或 .NET)或 XmlPrime(针对 .NET))或Saxon CE(在浏览器中)来运行 XSLT 2.0 。

如果您想将 XSLT 1.0 与 EXSLT 一起使用,则使用http://www.exslt.org/date/functions/difference/date进行测试http://home.arcor.de/martin.honnen/xslt/test2013121001.xml .difference.template.xsl在实际版本的 Firefox、Opera 和 IE 上完美运行。