我有以下查询:
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"}, ...).
我怎么能这样做?
答案 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>