Marklogic xdmp:node-insert-child添加空xmlns

时间:2018-09-21 20:36:32

标签: xquery marklogic

运行以下代码时,最终在添加的节点中出现一个空的xmlns:

declare namespace myns = "http://hello.com/myns";

xdmp:node-insert-child(
    fn:doc($file)/myns:results,
    <event ts="{fn:current-dateTime()}">Removed</event>)

结果:

<?xml version="1.0" encoding="UTF-8"?>
<results xmlns="http://hello.com/myns">
    <event ts="2018-09-21T15:23:23">Created</event>
    <event ts="2018-09-21T15:23:28" xmlns="">Removed</event>
</results>

这会导致出现问题日志,您知道为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:5)

这是因为Created事件已经在http://hello.com/myns名称空间中。但是Removed事件不在任何命名空间中,因此这就是为什么您在XML中看到xmlns=""的原因,该事件将其指定为无命名空间元素。

如果要将它们全部放在同一个命名空间中,则可以在插入事件之前添加前缀或添加默认的命名空间声明:

<myns:event ts="...">
<event xmlns="http://hello.com/myns" ts="...">