我已经进行了大约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>
上面例子中的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>
将此添加到XSLT验证程序,它会在这两个日期之间显示正确的值“4”天.
我希望能够创建一个实际上可以进行计算的文档,无论它们是日期还是数字,但此时似乎是不可能的.获取日期数,然后使用该值进行一些计算.
解决方法
您的样式表使用的是XSLT 2.0版,浏览器仅支持XSLT 1.0版. xs:dateTime等数据类型和XSLT 1.0版不支持days-from-duration等函数.因此,您需要使用XSLT 2.0处理器(如Saxon 9(适用于Java或.NET)或XmlPrime(适用于.NET)或使用
Saxon CE (in the browser))运行XSLT 2.0.
如果您想将XSLT 1.0与EXSLT一起使用,那么使用http://www.exslt.org/date/functions/difference/date.difference.template.xsl的测试http://home.arcor.de/martin.honnen/xslt/test2013121001.xml对于我的实际版本的Firefox,Opera和IE来说是完美的.