【发布时间】:2010-08-27 12:50:53
【问题描述】:
我想附加一些 XML 标记的值,然后再次附加结果。但是我在附加结果时遇到了一些麻烦,所以我只有一个附加的最终结果。
想象一下你有这个:
<nodeA>
<nodeB>
<item>1</item>
<item>2</item>
<yesno>blah</yesno>
</nodeB>
<nodeC>
<thing>A</thing>
</nodeC>
</nodeA>
<nodeA>
<nodeB>
<item>3</item>
<item>4</item>
<yesno>blah</yesno>
</nodeB>
<nodeC>
<thing>B</thing>
</nodeC>
</nodeA>
我想得到这个结果<result>A,1,2,B,3,4</result>
但我得到了这个:<result>A,1,2</result><result>B,3,4</result>
我一直在读这个:XQuery: how to properly append , in for loop 但我仍然无法让它工作。这是我的代码示例。
let $contador := count(
for $x in $productDoc//*[substring(local-name(.),2,23)="nodeB"]
where not(exists ($x/ns0:yesno))
return
$x)
return
if ($contador = 0) then
<result> </result>
else
for $x in $productDoc//*[substring(local-name(.),2,18)="nodeB"]
where not(exists ($x//ns0:yesno))
return
for $y in $x//*[matches(name(.),'thing')]
let $z := $x//*[matches(name(.),'item')]
return
for $i in $y
let $c := concat($i,",",string-join($z,","))
return
let $d := string-join($c,",")
<result>{ $d }</result>
我想正在发生的事情是我错误地附加了部分结果......或者在错误的地方,但我不知道在哪里做。也许我应该从另一个对结果进行字符串连接的函数调用这个函数。你怎么看?
【问题讨论】:
-
最好给出一个XML的例子和你想要得到的结果。仅查看代码就很难理解您想要什么。
-
我认为示例的代码是可见的,我对其进行了编辑以更正它。