我有一个XML文件。我需要获取文件中的所有元素,除了一个。需要在XQuery中编写它。表达是什么?
我的文件是doc1.xml:
<root>
<one>1</one>
<two>2</two>
<three>3</three>
</root>
如果我执行fn:doc(doc1.xml),它将返回所有内容。 我想要除3的元素值之外的所有信息。 我该怎么做?
答案 0 :(得分:2)
将文档传递给使用typeswitch的函数,不对three
元素执行任何操作,并复制所有其他内容。
declare function local:filter($nodes as node()*)
{
for $node in $nodes
return
typeswitch($node)
case element(three)
return ()
case element()
return
element { name($node) } {
$node/@*,
local:filter($node/node())
}
default
return $node
};
let $doc :=
<root>
<one>1</one>
<two>2</two>
<three>3</three>
</root>
return local:filter($doc)