XQuery/資源時間線
外觀
< XQuery
您想使用集合的建立和修改日期來建立時間線。
許多檔案系統和 XML 資料庫(如 eXist 資料庫)會自動為每個資源保留兩個日期。一個是建立日期,另一個是資源上次修改的日期。這些日期對於執行資源增量備份的許多系統都是必需的。
我們可以使用這些日期來自動建立一個或多個集合的時間線報告。這些報告可以作為審計跟蹤,並可以幫助您找出誰在何時修改了什麼。
以下是我們將在這兩個示例中使用的兩個函式
xmldb:last-modified($collection as item(), $resource as xs:string) xs:dateTime? xmldb:created($collection as xs:string, $resource as xs:string) xs:dateTime
請注意,您也可以使用帶有單個引數的 created 函式來檢視集合的建立日期。
我們的查詢將接受一個引數,即我們要建立時間線集合的資料庫路徑表示式。然後,我們的時間線將顯示此集合的建立日期和修改日期。
以下是一個示例查詢片段,它列出集合中所有資源的子項,並根據時間線事件 XML 結構格式化資料。
let $collection := '/db/test'
return
<data date-time-format="iso8601">{
for $child in xmldb:get-child-resources($collection)
return (
<event start="{xmldb:created($collection, $child)}" isDuration="false">{$child} created</event>,
<event start="{xmldb:last-modified($collection, $child)}" isDuration="false">{$child} last-modified</event>
)
}</data>
這將返回一個格式如下面的檔案
<data date-time-format="iso8601">
<event start="2009-02-17T12:50:55.992-06:00" isDuration="false">foo.xq created</event>
<event start="2009-02-18T15:12:47.529-06:00" isDuration="false">foo.xq last-modified</event>
<event start="2008-11-25T13:53:23.877-06:00" isDuration="false">bar.xq created</event>
<event start="2008-11-25T14:22:27.798-06:00" isDuration="false">bar.xq last-modified</event>
<event start="2008-11-25T15:39:40.445-06:00" isDuration="false">foo.xhtml created</event>
<event start="2008-11-25T15:41:51.547-06:00" isDuration="false">bar.xhtml last-modified</event>
<event start="2009-02-06T14:24:34.74-06:00" isDuration="false">hello-world.xml created</event>
<event start="2009-02-06T15:13:24.251-06:00" isDuration="false">hello-world.xml last-modified</event>
<event start="2008-11-25T14:07:00.273-06:00" isDuration="false">test.xml created</event>
<event start="2008-11-25T14:07:00.273-06:00" isDuration="false">test.xml last-modified</event>
</data>