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>