将结果关联到另一个变量XQuery

将结果关联到另一个变量XQuery,xquery,Xquery,我有以下疑问: for $b in //Desarrollador let $desc := $b/Programa/Descripcion/text() let $ver := $b/Programa/Version/text() where $b/@CodigoDes = "D02" return <salida>{$desc, $ver}</salida> 我该怎么做?正如Charles Duffy在评论中提到的,似乎在一些Desarrollador节点中有多个P

我有以下疑问:

for $b in //Desarrollador
let $desc := $b/Programa/Descripcion/text()
let $ver := $b/Programa/Version/text()
where $b/@CodigoDes = "D02"
return <salida>{$desc, $ver}</salida>

我该怎么做?

正如Charles Duffy在评论中提到的,似乎在一些
Desarrollador
节点中有多个
Programa
子节点。这解释了为什么
concat(…)
抱怨它的参数是序列。如果是这种情况,下面的查询应该执行您想要的操作:

for $p in //Desarrollador[@CodigoDes = "D02"]/Programa
let $desc := $p/Descripcion/text()
let $ver := $p/Version/text()
return <salida>{$desc, $ver}</salida>
用于//desarrolaldor[@CodigoDes=“D02”]/Programa中的$p
让$desc:=$p/description/text()
让$ver:=$p/Version/text()
返回{$desc,$ver}

您能把这个做成一个简单的例子吗?如果您的引擎是XQuery 3,则在示例中添加一个
声明上下文项:=document{…}
,这样它就包含了某人自己运行它并查看结果(从而检查其答案)所需的所有内容这是一个简单的方法。我猜一个
解吸Rollador
可以有多个
程序a
,您需要第一个版本,然后是第一个描述,然后是第二个版本,然后是第二个描述——但是因为您没有包含运行查询所针对的数据,这纯粹是猜测。谢谢,这就是我需要的。Bun现在,我如何在{$desc,@Sergio,try
{$desc,,$ver}
之间放置一个空格。好的,对不起,我几天前就开始了。我不知道为什么,但我尝试过,但总是出错。
Item expected, sequence found: (text{"Gestion Discos Duros"}, ...).  
for $p in //Desarrollador[@CodigoDes = "D02"]/Programa
let $desc := $p/Descripcion/text()
let $ver := $p/Version/text()
return <salida>{$desc, $ver}</salida>