在另一个变量XQuery上结果

时间:2018-05-15 13:27:44

标签: 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ónDiscosDurosImpresora32

然而,我真正想要的是:

  

GestiónDiscos3 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"}, ...).  

我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

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

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