循环前的静态内容

时间:2015-01-29 18:46:56

标签: xquery marklogic

是XQuery的新手。我写了下面的查询,它完美地工作并从csv格式生成结果 xml存储在Marklogic中。

xquery version "0.9-ml"
let $data := someQuery
return 
for $i in $data

return
fn:string-join((

$i/PATHTOFILED_1/text(),
$i/PATHTOFILED_2/text(),
.
.
.
.
$i/PATHTOFILED_N/text()

),","
)

输出:

abc,def,adc,
dff,eef,ddf,
.
.
.
.
fff,eed,ddg,

我有新要求在数据之前添加静态标头。 预期的输出就像

预期产出:

HEAD1, HEAD2, HEAD3,
abc,def,adc,
dff,eef,ddf,
.
.
.
.
fff,eed,ddg,

只需在顶行添加 HEAD1,HEAD2,HEAD3,即可。标头不是XML的一部分。它们应该是使用静态数据的简单字符串中的查询的一部分,并且可以在查询本身中随时修改。 我试图将以下代码段添加到查询中。但查询未在Marklogic查询控制台中运行。

concat("HEAD1,"HEAD2","HEAD3"),

任何解决方案都非常感谢。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

在FLWOR表达式之前添加它:

xquery version "1.0-ml";

string-join(("HEAD1","HEAD2","HEAD3"),","),
let $data := someQuery
return 
for $i in $data

return
fn:string-join((

$i/PATHTOFILED_1/text(),
$i/PATHTOFILED_2/text(),
.
.
.
.
$i/PATHTOFILED_N/text()

),","
)
顺便说一句,除非你有非常令人信服的理由,否则我真的不会使用0.9毫升的方言。它可以工作,但实际上它仍然存在兼容性。