Таким образом, у меня есть два узла элементов, к которым я по существу пытаюсь присоединиться. Я хочу, чтобы высокоуровневый узел остался таким же, но дочерние узлы, которые будут заменены теми, пересекаются ссылаемый.
Данный:
<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]
Это выбирает все
элементы в $ list1
значение атрибута foo
которого равно атрибуту foo
одного из элементов
в $ list2.
Чтобы скопировать все атрибуты элемента
, сделайте что-то вроде этого :
for $attr in /whateverIsthePathLeadingToList/list/@*
return
attibute {name($attr)} {$attr}