所以我有两个元素节点,我基本上试图加入.我希望顶级节点保持不变,但子节点将被交叉引用的节点替换. 鉴于: 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}