【发布时间】:2018-07-18 06:56:28
【问题描述】:
在 MarkLogic 中,我尝试过以下代码。但是,我希望有一个程序可以按年、月、日排序,然后限制结果。下面的代码对结果进行了限制,然后按YY、MM、DD排序,返回了错误的结果。
xquery version "1.0-ml";
declare variable $query :=
cts:and-query
((
cts:element-word-query(xs:QName("journal-title"),"MyJournal"),
cts:element-word-query(xs:QName("subject"),"MyNews")));
declare function local:do-query(){
element xml {
for $i in cts:uris( (), ("limit=50"), $query)
let $item := doc($i)
order by ($item//pub-date/year) descending, ($item//pub-date/month) descending, ($item//pub-date/day) descending
return
element article {
element journal-title { $item//journal-title },
element sub {$item//article-meta//article-categories//subj-group[@subj-group-type="content-type"]//subject},
element title { $item//article-title },
element byline { $item//contrib/string-name },
element body { $item//body },
element images {
for $graphic in $item//body//graphic
return element image { ($graphic//@*[name()="xlink:href"]/data()) }},
element year {$item//pub-date/year/string()},
element month {$item//pub-date/month/string()},
element day {$item//pub-date/day/string()},
element doi { $item//article-id[@pub-id-type="doi"]/text() },
element doitrim {substring-after($item//article-id[@pub-id-type="doi"]/text(),"/")}
}
}
};
local:do-query()
提前致谢。
【问题讨论】: