XQuery/基於時間的查詢
外觀
< XQuery
您想要根據日期時間資訊查詢集合中的專案。
預設情況下,XML 檔案使用標準 ISO dateTime 結構來儲存時間資訊。與儲存時間相關的兩種主要 XML 資料型別是
xs:date - 用於以 YYYY-MM-DD 格式儲存僅日期。xs:dateTime - 用於儲存日期和時間。
還有許多其他用於儲存僅年份、月份、日期和時間等的結構,但此示例僅涵蓋日期和日期時間。
在以下示例中,我們將使用簡單的日期結構儲存“事件”資料。事件將只有一個開始日期或一個包含開始日期和結束日期的日期範圍。
<event>
<id>6</id>
<name>Architecture Tradeoff Analysis</name>
<start-date>2011-04-07</start-date>
<end-date>2011-04-21</end-date>
</event>
您可以使用以下 xquery 結構找到在任何特定時間點發生的事件。
來自 events-at-time.xq 的原始碼
{: get a URL parameter to this XQuery :)
let $date := xs:date(request:get-parameter('date', ''))
(: create a sequence of all events :)
let $events := collection('/db/apps/timelines/data')//event
return
{: return all events that start before the date AND end after the date :)
for $event in $events[
xs:date(./start-date/text()) lt $date
and xs:date(./end-date/text()) gt $date
]
return $event
您還可以基於日期時間結構設定非常快速的搜尋,即使對於 100,000 個專案的大型集合也是如此,在您瞭解如何在 XML xs:dateTime 結構上配置範圍索引後。請參閱:http://www.w3.org/TR/xmlschema-2/#dateTime 日期時間結構的工作方式。
以下頁面包含有關索引的說明
http://exist-db.org/exist/apps/doc/indexing.xml
並確保閱讀有關範圍索引的第 2.2 節。
我還會在您的範圍索引中使用 xs:date 和 xs:dateTime 結構。
如果您正在跟蹤文件建立和修改日期時間,則您的集合配置檔案(請參閱 http://exist-db.org/exist/apps/doc/indexing.xml#idxconf)可能包含以下幾行
<create qname="start-date" type="xs:date"/>
<create qname="end-date" type="xs:date"/>
<create qname="created-dateTime" type="xs:dateTime"/>
<create qname="last-modified-dateTime" type="xs:dateTime"/>
請注意,所有 eXist 集合和資源在其元資料中也都有這兩個日期。您可以使用 xmdb 模組獲取這些時間戳
- 本華夏公益教科書中的 時間線混搭
- 使用 JQuery 的甘特圖
- 時間線 SVG 報告
- 使用 Anychart 從 XML 資料建立甘特圖