如何忽略XQuery输出中的XML元素?

时间:2016-11-27 23:55:19

标签: xml expression xquery

我有一个XML文件。我需要获取文件中的所有元素,除了一个。需要在XQuery中编写它。表达是什么?

我的文件是doc1.xml:

<root>
  <one>1</one>
  <two>2</two>
  <three>3</three>
</root>

如果我执行fn:doc(doc1.xml),它将返回所有内容。 我想要除3的元素值之外的所有信息。 我该怎么做?

1 个答案:

答案 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)