使用XSLT计算XML中两个日期的天数
我已经进行了大约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来说是完美的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |