Marklogic如何排除xml中的多个节点
当排除元素中的多个节点(如“源”和“导航器”节点)时,我会出现语法错误。但是,如果在返回文档之前只排除一个节点,而不合并,那么它就可以工作Marklogic如何排除xml中的多个节点,marklogic,Marklogic,当排除元素中的多个节点(如“源”和“导航器”节点)时,我会出现语法错误。但是,如果在返回文档之前只排除一个节点,而不合并,那么它就可以工作 [(fn:local-name() != ("Sources","Navigators")] 在Marklogic Qconsole中: for $x in $uris let $doc := fn:doc($x) let $copymeta := <meta:Metadata> { $d
[(fn:local-name() != ("Sources","Navigators")]
在Marklogic Qconsole中:
for $x in $uris
let $doc := fn:doc($x)
let $copymeta := <meta:Metadata>
{ $doc//meta:Metadata/*[(fn:local-name() != ("Sources","Navigators")] }
</meta:Metadata>
let $newxml := <omd:record>
{ $copymeta }
</omd:record>
return $newxml
用于$uri中的$x
设$doc:=fn:doc($x)
let$copymeta:=
{$doc//meta:Metadata/*[(fn:local-name()!=(“源”、“导航器”)]}
让$newxml:=
{$copymeta}
返回$newxml
在fn:local-name()
前面有太多的圆括号
但是,您也可以使用except
关键字和前缀通配符
for $x in $uris
let $doc := fn:doc($x)
let $copymeta := <meta:Metadata>
{ $doc//meta:Metadata/(* except (*:Sources, *:Navigators)) }
</meta:Metadata>
let $newxml := <omd:record>
{ $copymeta }
</omd:record>
return $newxml
用于$uri中的$x
设$doc:=fn:doc($x)
let$copymeta:=
{$doc//meta:Metadata/(*除了(*:Sources,*:Navigators))}
让$newxml:=
{$copymeta}
返回$newxml
HTH!操作符的语义不直观。请参阅。当代码找到*:Sources节点时,它的计算结果为对“导航器”的
!=
,当它找到*:导航器节点时,它的计算结果为对“源”的!=
。然后获得所有节点
如果不比较节点序列(因此除外,不是一个选项),则可以使用fn:not(A=B)来获得预期效果。在这种情况下,fn:not(fn:local-name()=(“源”、“导航器”)
应按预期工作