在XQuery中添加2个XML字符串

时间:2012-05-01 10:44:55

标签: xml string xquery

我正在尝试创建一些项目的xml输出,这非常有效,但是当我尝试在它前面添加一个blabla标记失败时。

我认为这很容易,但我无法找到解决方案。

我正在使用的代码:

let $data := content:sortContent(content:retrieveLastFM() union content:retrieveYoutube() union content:retrieveImgur() union content:retrieveFlickr() union content:retrieveNYTimes() union content:retrieveDiggTechnology() union content:retrieveDiggAmusement()),

$doc := <description>Blablabla</description> <items> {$data} </items>

return $doc

以下工作正常:

$doc := <items>{$data}</items> 

虽然我想在我的项目列表前面进行描述..

我希望你明白我想要到达的地方;) 在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您尝试将一系列节点分配给$doc,这必须通过,明确完成:

let $data := ...,
    $doc  := (<description>Blablabla</description>, <items> {$data} </items>)
return $doc

另一种可能性是将两个节点包装在另一个元素或document节点内(正如变量名称所暗示的那样):

    $doc  := <doc><description>Blablabla</description><items> {$data} </items></doc>

    $doc  := document { <description>Blablabla</description>, <items> {$data} </items> }

答案 1 :(得分:0)

您的查询不会输出有效的XML。根据您的想法,有两种可能性:

将元素包装在某个容器元素中以返回有效的XML:

$doc := <container><description>Blablabla</description> <items> {$data} </items></container>

返回

<container>
  <description>Blablabla</description>
  <items>somedata</items>
</container>

或者您可以返回 XML节点序列

$doc := (<description>Blablabla</description>, <items> {$data} </items>)

返回

<description>Blablabla</description>
<items>1</items>
<description>Blablabla</description>
<items>2</items>
<description>Blablabla</description>
<items>3</items>