【问题标题】:XQuery: Fill array the FLWOR wayXQuery:以 FLWOR 方式填充数组
【发布时间】:2017-01-17 14:53:30
【问题描述】:

我有一个数组,我想用取自特定 XML 节点的字符串填充它,就像下面的伪代码示例:

let $array := array {}

for $child in $collection
where contains(data($child), "Hey")
do $array := array:append($array, data($child))

正确的代码如何执行这样的操作?

如果我有这个 XML

<root>
    <child>Hey</child>
    <child>Ho</child>
    <child>Hey Ho</child>
</root>

我希望数组是

array ["Hey", "Hey Ho"]

【问题讨论】:

    标签: xquery basex flwor


    【解决方案1】:

    XQuery 是一种函数式语言。因此,变量一旦被声明就不能被重新赋值。

    下面的代码应该可以解决问题:

    array {
      for $child in $collection
      where contains(data($child/node1), "Hey")
      return $child/node2
    }
    

    请注意,值的本机 XQuery 数据类型是一个序列。根据您的用例,也许您根本不需要数组。

    【讨论】:

    • 或者更简单,更接近提供的 XML,array{ $collection[contains(.,"Hey")] }
    • 对。在我放置答案后,似乎原始问题已被编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2019-07-23
    • 2021-05-04
    相关资源
    最近更新 更多