Marklogic xdmp:node-insert-child 添加空 xmlns
Marklogic xdmp:node-insert-child adds empty xmlns
当我 运行 以下代码时,我在添加的节点中得到一个空的 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>
这会导致一系列问题,知道为什么会这样吗?
这是因为 Created
事件已经在 http://hello.com/myns
命名空间中。但是 Removed
事件不在任何命名空间中,所以这就是为什么您在 XML 中看到 xmlns=""
,这表明它是一个无命名空间元素。
如果您希望它们都在同一个命名空间中,您可以为要插入的事件添加前缀或添加默认命名空间声明:
<myns:event ts="...">
<event xmlns="http://hello.com/myns" ts="...">
当我 运行 以下代码时,我在添加的节点中得到一个空的 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>
这会导致一系列问题,知道为什么会这样吗?
这是因为 Created
事件已经在 http://hello.com/myns
命名空间中。但是 Removed
事件不在任何命名空间中,所以这就是为什么您在 XML 中看到 xmlns=""
,这表明它是一个无命名空间元素。
如果您希望它们都在同一个命名空间中,您可以为要插入的事件添加前缀或添加默认命名空间声明:
<myns:event ts="...">
<event xmlns="http://hello.com/myns" ts="...">