我正在尝试构建一个将其属性“反转”为子元素并将子元素“反转”为属性的单个节点。为此,我需要一个遍历每个属性的 for 循环,并迅速将其转换为具有正确名称和正确值的节点,反之亦然。这一切都很好而且很花哨,但可以理解的是,这段代码无法编译。
for $subele in //music/*
return
<doc>
{
element {node-name($subele)}
{
for $deepernode in $subele/* (: first for loop :)
return
attribute {node-name($deepernode)} {concat("_",replace(lower-case($deepernode),"[^A-Za-z_0-9]","_"))}
for $deepernode in $subele/@* (: second for loop :)
return
element {node-name($deepernode)} {concat("_",replace(lower-case($deepernode),"[^A-Za-z_0-9]","_"))}
}
}
</doc>
没有其他方法可以做到这一点,还是我需要先构造属性反转,然后用元素“修改”,反之亦然?
非常感谢堆栈:)