加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:09:05 所属栏目:百科 来源:网络整理
导读:所以我有两个元素节点,我基本上试图加入.我希望顶级节点保持不变,但子节点将被交叉引用的节点替换. 鉴于: stuff item foo="foo" boo="1"/ item foo="bar" boo="2" / item foo="baz" boo="3"/ item foo="blah boo="4""//stufflist a="1" b="2" foobar/foo fo
所以我有两个元素节点,我基本上试图加入.我希望顶级节点保持不变,但子节点将被交叉引用的节点替换.

鉴于:

<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}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读