如何使用Xquery按顺序获取节点的相同属性值?

问题描述

嗨..我想按顺序打印属性值,例如如果有一个如下所示的 XML

<module>
<content>
<catalouge SC="25" item="200">
<Number id="250" >
<Character condValue="PRE" changeMark="1">
<count Number="1" </count>
</Character>
<Character condValue="EMB">
<count Number="154"</count>
</Character>
</Number>
</catalouge>
<catalouge SC="25" item="200" >
<Number id="780">
<Character condValue="EMB" changeMark="1">
<count Number="1" </count>
</Character>
<Character condValue="EMB">
<count Number="154"</count>
</Character>
</Number>
</catalouge>
<catalouge SC="25" item="240">
<Number id="666" Value="123" >
<Character condValue="EMB">
<count Number="2" </count>
</Character>
</Number>
</catalouge>
<catalouge SC="25" item="280">
<Number id="1994" Value="1234" >
<Character condValue="POST">
<count Number="3"</count>
</Character>
</Number>
</catalouge>
<catalouge SC="25" item="300">
<Number id="19956" Value="1235">
<Character condValue="PRE">
<count Number="4" </count>
</Character>
</Number>
</catalouge>
</content>
</module>

请在下面找到我尝试过的 xquery

for  $p in doc("abc.xml")//module/content
    let $csns := $p/catalouge
        for $csn in $csns
            let $item := $csn/string(@item)
            let $isns := $csn/Number
            for $isn in $isns
              let $id := $isn/string(@id)
              let $chr := $isn/Character/string(@condValue)
        return $chr
 

输出 当我运行时,我从 Xquery 上面得到如下输出


EMB
EMB
EMB
EMB
发布

但是我需要这种方式,下面怎么实现

("PRE","EMB")  
("EMB","EMB")  
"EMB"  
"POST"  
"PRE" 

解决方法

怎么样

for $number in $doc//catalouge//Number
return string-join($number//Character//@condValue,",")

输出:

PRE,EMB
EMB,EMB
EMB
POST
PRE