@Martin You solved my problem ! Thanks a lot because i have learned a
lot today (! operator, typeswitch).
@Christian Indeed it would be a convenient feature in BaseX, even better
in the spec.
Yann
Le 25/08/2021 à 18:00, Christian Grün a écrit :
Hi Yann,
The common way to do this is as Martin proposed: You can strip
namespaces via a recursive function. See [1] for an example.
As this is a frequently asked feature, it would about time to define a
mode or built-in function for this purpose in BaseX. An equivalent
solution for exclude-result-prefixes could also be proposed for XQuery
4.0 [2]…
Salutations,
Christian
[1]
https://www.mail-archive.com/[email protected]/msg13678.html
[2] https://github.com/qt4cg/qtspecs/issues
On Wed, Aug 25, 2021 at 5:54 PM Martin Honnen <[email protected]> wrote:
Am 25.08.2021 um 17:41 schrieb Yann NICOLAS (ABES):
Did you see my other suggestion in the first answer to try to change your
XQuery code to use
insert node $record/c ! element { node-name() } { @*, node() } into
db:open('uk_parlement_ead')/dsc
Oh, i missed it ! Sorry.
It is working ... at the <c> level :
<c level="item">
<did xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:marc="http://www.loc.gov/MARC21/slim">
I see, I guess one way would be to write a recursive function you pass that `c`
element to that then recreates any element like in the above snippet, only
recursively e.g.
declare function local:strip-namespaces($node as node()) as node()
{
typeswitch($node)
case element()
return element { node-name($node) } { $node/@*,
$node/node()!local:strip-namespaces(.) }
default
return $node
};
and then use e.g.
insert node $record/c ! local:strip-namespaces(.) into
db:open('uk_parlement_ead')/dsc
Hopefully there is an easier way using XQuery update instructions but I am not
good enough with them to know.