bra*_*ter 16 xquery duplicates
我有一个动态生成的XML文档,我需要一个函数来消除它的任何重复节点.
我的功能如下:
declare function local:start2() {
let $data := local:scan_books()
return <books>{$data}</books>
};
Run Code Online (Sandbox Code Playgroud)
示例输出是:
<books>
<book>
<title>XML in 24 hours</title>
<author>Some Guy</author>
</book>
<book>
<title>XML in 24 hours</title>
<author>Some Guy</author>
</book>
</books>
Run Code Online (Sandbox Code Playgroud)
我只想要我的书籍根标签中的一个条目,还有其他标签,比如说那里的小册子也需要删除重复项.有任何想法吗?
更新了以下评论.通过唯一节点,我的意思是删除多个具有完全相同内容和结构的节点.
Dim*_*hev 16
一种更简单,更直接的单行XPath解决方案:
只需使用以下XPath表达式:
/*/book
[index-of(/*/book/title,
title
)
[1]
]
Run Code Online (Sandbox Code Playgroud)
例如,应用于以下XML文档时:
<books>
<book>
<title>XML in 24 hours</title>
<author>Some Guy</author>
</book>
<book>
<title>Food in Seattle</title>
<author>Some Guy2</author>
</book>
<book>
<title>XML in 24 hours</title>
<author>Some Guy</author>
</book>
<book>
<title>Food in Seattle</title>
<author>Some Guy2</author>
</book>
<book>
<title>How to solve XPAth Problems</title>
<author>Me</author>
</book>
</books>
Run Code Online (Sandbox Code Playgroud)
上面的XPath表达式正确选择以下节点:
<book>
<title>XML in 24 hours</title>
<author>Some Guy</author>
</book>
<book>
<title>Food in Seattle</title>
<author>Some Guy2</author>
</book>
<book>
<title>How to solve XPAth Problems</title>
<author>Me</author>
</book>
Run Code Online (Sandbox Code Playgroud)
解释很简单:对于每一个book
,只选择其出现次数的一个-使得其在指数的所有图书相同的第一指标title
在所有冠军.
归档时间: |
|
查看次数: |
16848 次 |
最近记录: |