Я не уверен, что точно следую тому, что вы хотите, во втором результате, но я попробую сделать это: первый пример ниже даст ваш результат # 1 (я поместил ваши исходные данные в test.xml и предположил в ваших реальных данных, что 'child' и 'attr' могут повторяться):
<root>{
for $child in doc('test.xml')/root/*
return
element {name($child)} {
for $attr at $index in $child/@*
return (
attribute {name($attr)} {$attr},
attribute {concat(name($attr), 2)} {$attr}
)
}
}</root>
Его можно изменить, добавив другое значение, как в результате # 2, как показано ниже:
<root>{
for $child in doc('test.xml')/root/*
return
element {name($child)} {
for $attr at $index in $child/@*
return (
attribute {name($attr)} {$attr},
attribute {concat(name($attr), 2)} {
'**H**ello **W**orld'
}
)
}
}</root>
Надеюсь, это поможет.