【问题标题】:How to get same attribute values of a node, in a sequence using Xquery?如何使用 Xquery 按顺序获取节点的相同属性值?
【发布时间】:2021-05-12 06:20:38
【问题描述】:

嗨..我想按顺序打印属性值,例如如果有一个如下所示的 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 表达式,因此只需使用这种方法在正确的节点上使用for

标签: xml xpath xquery basex


【解决方案1】:

怎么样

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

输出:

PRE, EMB
EMB, EMB
EMB
POST
PRE

【讨论】:

  • 非常感谢 :) @Jack Fleeting,这行得通,我是 xquery 的新手,我尝试过字符串连接,但我错过了它
  • stackoverflow.com/questions/66112178/… 你能帮我解决这个问题吗?
  • @Sreekala 我去看看。
猜你喜欢
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
相关资源
最近更新 更多