跳到內容

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>
華夏公益教科書