如何获得节点而不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 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
属性是等于$ list2中的foo
元件中的一个的<item>
属性的值。
<强>为了复制<list>
元素的所有属性,这样做强>:
for $attr in /whateverIsthePathLeadingToList/list/@*
return
attibute {name($attr)} {$attr}
其他提示
略simplier ...创建从现有的新对象,但没有它的子属性仅
假设:
让$ old_list:=
此创建一个新的列表复制其属性
<list>{$old_list/@*}</list>
不隶属于 StackOverflow