微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xml – 如何在xQuery中获取没有子节点的节点?

所以我有两个元素节点,我基本上试图加入.我希望顶级节点保持不变,但子节点将被交叉引用的节点替换.

鉴于:

<stuff>
  <item foo="foo" boo="1"/>
  <item foo="bar" boo="2" />
  <item foo="baz" boo="3"/>
  <item foo="blah boo="4""/>
</stuff>

<list  a="1" b="2">
  <foo>bar</foo>
  <foo>baz</foo>
</list>

我想循环遍历“list”并在“stuff”中交叉引用元素以获得此结果:

<list  a="1" b="2">
  <item foo="bar" boo="2" />
  <item foo="baz" boo="3"/>  
</list>

我想这样做而不必知道“列表”上可能包含哪些属性.换句话说,我不想明确地将它们称为

attribute a { $list/@a },attribute b { $list/@b }

解决方法

使用:

$list1 / item [@foo = $list2 / item / @ foo]

这将选择所有< item> $list1中的元素,其foo属性的值等于< item>之一的foo属性. $list2中的元素.

为了复制< list>的所有属性元素,做这样的事情:

for $attr in /whateverIsthePathLeadingToList/list/@*
    return 
      attibute {name($attr)} {$attr}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。