首页 > 解决方案 > 将结果连接到另一个变量 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>

结果是:

Gestión Discos DurosImpresora32

然而,我真正想要的是:

Gestión Discos 3 DurosImpresora 2

我试图连接:

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

但它向我显示了这个错误:

Item expected, sequence found: (text{"Gestion Discos Duros"}, ...).  

我怎么能做到?

标签: xquery

解决方案


Programa正如 Charles Duffy 在评论中提到的那样,某个节点中似乎有多Desarrollador个子节点。这就解释了为什么concat(...)抱怨它的论点是序列。如果是这种情况,下面的查询应该做你想做的事:

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

推荐阅读