说我的数据库中有以下文件:a_doc1,a_doc2,b_doc1和b_doc2
所有这些文件都具有以下格式
<doc>
....
<updatedTime>2011-02-07T14:41:02.133-05:00</updatedTime>
....
</doc
&GT;
使用fn:current-dateTime()
创建文档时,将插入“updatedTime”元素的值现在我正在尝试执行以下操作:
<updatedTime>
元素的降序排列这些文档我尝试了以下内容:
for $doc_name in db:list()
where fn:starts-with($doc_name, 'a_')
order by xs:dateTime(doc($doc_name)/updatedTime) descending
return $doc_name
说“a_doc1”在“2011-02-07T14:40:00.78-05:00”创建,“a_doc2”在“2011-02-07T14:41创建:02.133-05:00“,所需的输出为 a_doc2 。简而言之,必须返回创建的最新文档的文档名称(以a_开头)。
当我尝试我的示例代码时,返回的输出是:[a_doc1,a_doc2]。 预期输出为:[a_doc2,a_doc1]。
谢谢, 索尼
答案 0 :(得分:0)
你应该使用(xs:http://www.w3.org/2001/XMLSchema):
xs:dateTime($arg as xs:anyAtomicType?) as xs:dateTime?
Example:
xs:dateTime("1999-12-31T12:00:00")
而不是(fn:http://www.w3.org/2005/xpath-functions)
fn:dateTime($arg1 as xs:date?, $arg2 as xs:time?) as xs:dateTime?
Example:
fn:dateTime(xs:date("1999-12-31"), xs:time("12:00:00"))
答案 1 :(得分:0)
order by dateTime(doc($doc_name)/updatedTime/text())
而非使用:
order by xs:dateTime(doc($doc_name)/updatedTime)