gpt4 book ai didi

xpath - XPath或XQuery排除仅包含列表的文章部分

转载 作者:行者123 更新时间:2023-12-03 16:10:30 26 4
gpt4 key购买 nike

我正在尝试摘录文章的各个部分(简介,历史记录,概述...)。我正在寻找一个XPath来选择所有以标题开头并包含一些段落的部分。如果它们仅包含列表,则应将其丢弃。

例如 :

<h2>Intro</h2>
<p> It has paragraph and should be extracted </p>
.....
<h2>References </h2>
<ul>...It has just list and should be discarded </ul>
<h2>...</h2>
....


如果不可能使用XPath,则XQuery也可以工作。
我尝试了以下XQuery

for $x in doc("test.xq")//h2
return
<section>{$x/following-sibling::*[preceding-sibling::h2[1] is $x]}</section>


它根据需要选择各个部分,但是我无法对其施加条件(不仅限于 ul)。

最佳答案

您在另一个问题中提到这是在BaseX中,它支持XQuery 3.0 group by机制,因此如何处理:

for $x in doc("test.xq")//h2/following-sibling::*[not(self::h2)]
group by $hId := generate-id($x/preceding-sibling::h2[1])
return
if ($x[not(self::ul)]) then
<section>{($x/preceding-sibling::h2[1], $x)}</section>
else ()


在这里,我首先找到我们要聚集在一起的所有非h2元素(根据您XML的结构,可能有一种更有效的方法),然后 group by表示每次“迭代” $x变量将是一个h2和下一个h2之间的非h2元素序列。然后, if条件检查该组中是否有至少一个不是 ul的元素。

关于xpath - XPath或XQuery排除仅包含列表的文章部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30710968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com