Marklogic/XQuery - 无法将结果限制为降序日期并使用元素 XML 标记
Marklogic/XQuery - Cannot limit results to Date Descending and use the element XML tag
我想使用 "element xml {" 语法。但是,我收到错误消息:
XDMP-UNEXPECTED: (err:XPST0003) Unexpected token syntax error, unexpected Rbrace_, expecting Function30_ or Percent
并突出显示最后一个右大括号。我试过取消引用,但这并没有给出正确的效果。
我附上了下面的代码。
xquery version "1.0-ml";
element xml {
let $sorted-articles :=
for $item in (doc()//article)
where ($item//article-meta//article-categories//subj-group[@subj-group-type="content-type"]//subject) = "MyNews"
and ($item//journal-title) = "MyJournal"
order by $item//pub-date/year descending, $item//pub-date/month descending, $item//pub-date/day descending
return $item
for $item at $count in subsequence($sorted-articles, 1, 5)
return
element article {
element journal-title { $item//journal-title },
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(),"/")}
};
};
你的代码末尾有多余的分号,试试这个:
xquery version "1.0-ml";
element xml {
let $sorted-articles :=
for $item in (doc()//article)
where ($item//article-meta//article-categories//subj-group[@subj-group-type="content-type"]//subject) = "MyNews"
and ($item//journal-title) = "MyJournal"
order by $item//pub-date/year descending, $item//pub-date/month descending, $item//pub-date/day descending
return $item
for $item at $count in subsequence($sorted-articles, 1, 5)
return
element article {
element journal-title { $item//journal-title },
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(),"/")}
}
}
HTH!
我想使用 "element xml {" 语法。但是,我收到错误消息:
XDMP-UNEXPECTED: (err:XPST0003) Unexpected token syntax error, unexpected Rbrace_, expecting Function30_ or Percent
并突出显示最后一个右大括号。我试过取消引用,但这并没有给出正确的效果。
我附上了下面的代码。
xquery version "1.0-ml";
element xml {
let $sorted-articles :=
for $item in (doc()//article)
where ($item//article-meta//article-categories//subj-group[@subj-group-type="content-type"]//subject) = "MyNews"
and ($item//journal-title) = "MyJournal"
order by $item//pub-date/year descending, $item//pub-date/month descending, $item//pub-date/day descending
return $item
for $item at $count in subsequence($sorted-articles, 1, 5)
return
element article {
element journal-title { $item//journal-title },
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(),"/")}
};
};
你的代码末尾有多余的分号,试试这个:
xquery version "1.0-ml";
element xml {
let $sorted-articles :=
for $item in (doc()//article)
where ($item//article-meta//article-categories//subj-group[@subj-group-type="content-type"]//subject) = "MyNews"
and ($item//journal-title) = "MyJournal"
order by $item//pub-date/year descending, $item//pub-date/month descending, $item//pub-date/day descending
return $item
for $item at $count in subsequence($sorted-articles, 1, 5)
return
element article {
element journal-title { $item//journal-title },
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(),"/")}
}
}
HTH!