2013-12-10 39 views
4

我已經進行了大約5個小時的測試,嘗試了Google上發現的每一個例子,發現使用「xml xslt計算日期之間的天數」可以從「date.xml」文件中找到兩個日期並計算日期之間的日期,格式爲「YYYY-MM-DD」(下面的示例沒有這種格式,但它是我需要的唯一格式)使用XSLT計算XML中兩個日期的天數

我終於找到了這個網頁:: https://forums.oracle.com/thread/2432132

哪裏該解決方案可以在驗證:http://xslttest.appspot.com/

但是,將本地主機上的「date.xml/date.xslt」保存在試圖在Internet Explorer,Google Chrome或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」 這些之間的天兩個日期。

我希望能夠創建一個實際上可以進行計算的文檔,不管它們是日期還是數字,但目前似乎不可能。獲取日期數量,然後使用該值進行一些計算。

回答

3

您的樣式表使用的是XSLT版本2.0,瀏覽器僅支持XSLT 1.0版。 XSLT版本1.0不支持xs:dateTime等數據類型和days-from-duration等函數。因此,您需要使用Saxon 9(用於Java或.NET)或XmlPrime(用於.NET)或Saxon CE (in the browser)等XSLT 2.0處理器來運行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來說完美無瑕。

+0

我只使用XSLT v2.0,因爲它似乎是計算兩個日期之間天數的唯一方法,或者據我所知,似乎已經解決了很多人的問題。通過使用v1.0來獲得瀏覽器支持,是否有辦法從XML文檔中獲取2個日期並計算「天數」? – Deukalion

+0

我認爲EXSLT有一些日期支持,但現在我建議使用Saxon CE,如果您想在瀏覽器中運行XSLT並需要XSLT 2.0的功能。 –

+0

使用EXSLT甚至都不能工作,沒有像往常一樣發生。。像往常一樣,一個非常「好」的記錄功能沒有例子。代碼只是在有錯誤並且沒有顯示錯誤的地方停止。如果他們是善意地說「有什麼不對勁」。 – Deukalion

-1

但是,節約localhost上「date.xml/date.xslt」試圖在Internet Explorer,谷歌Chrome或Firefox或者打開 頁面顯示錯誤 或什麼都和它似乎總是有一直 - 沒有 信息是什麼錯誤。

您使用的樣式表需要XSLT 2.0兼容處理器。我不認爲任何瀏覽器都支持XSLT 2.0。 XSLT 1.0中的日期計算更加困難。

相關問題