当前位置 : 主页 > 网页制作 > xml >

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

来源:互联网 收集:自由互联 发布时间:2021-06-13
所以我有两个元素节点,我基本上试图加入.我希望顶级节点保持不变,但子节点将被交叉引用的节点替换. 鉴于: stuff item foo="foo" boo="1"/ item foo="bar" boo="2" / item foo="baz" boo="3"/ item foo="blah
所以我有两个元素节点,我基本上试图加入.我希望顶级节点保持不变,但子节点将被交叉引用的节点替换.

鉴于:

<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}
网友评论