通过 XPath 获取所有冗余元素
Get all redundant elements via XPath
如何通过XPath获取所有出现不止一次的元素?
<!DOCTYPE book [
<!ELEMENT book (title,section+)>
<!ELEMENT chapter (title,body?,section*)>
<!ELEMENT title (#PCDATA)>
<!ATTLIST chapter number ID CDATA #REQUIRED>
]>
我需要出现不止一次的所有 title
个元素。
例如,您可以搜索 title
与其后面的标题相同的内容:
//title[.=following::title]
XPath 1.0 解决方案(也适用于 XPath 2.0)
如果你想要所有 title
元素出现不止一次,你可以使用这个 XPath 1.0 表达式:
//title[.=following::title or .= preceding::title]
如果您想要 select 一组(没有重复项)所有 title
元素在文档中出现多次,您可以使用此 XPath 1.0表达式:
//title[.=following::title][not(. = preceding::title)]
要查看差异,请考虑以下 XML(根据您的 DTD 无效,但作为示例仍然有用):
<r>
<title>a</title>
<title>b</title>
<title>c</title>
<title>a</title>
<title>a</title>
<title>b</title>
<title>b</title>
<title>b</title>
</r>
XPath #1 selects:
<title>a</title>
<title>b</title>
<title>a</title>
<title>a</title>
<title>b</title>
<title>b</title>
<title>b</title>
(示例中除 c
title
之外的所有 title
元素)
XPath #2 selects:
<title>a</title>
<title>b</title>
两者都可能符合您的目的,具体取决于您需要对结果执行的操作。
如何通过XPath获取所有出现不止一次的元素?
<!DOCTYPE book [
<!ELEMENT book (title,section+)>
<!ELEMENT chapter (title,body?,section*)>
<!ELEMENT title (#PCDATA)>
<!ATTLIST chapter number ID CDATA #REQUIRED>
]>
我需要出现不止一次的所有 title
个元素。
例如,您可以搜索 title
与其后面的标题相同的内容:
//title[.=following::title]
XPath 1.0 解决方案(也适用于 XPath 2.0)
如果你想要所有
title
元素出现不止一次,你可以使用这个 XPath 1.0 表达式://title[.=following::title or .= preceding::title]
如果您想要 select 一组(没有重复项)所有
title
元素在文档中出现多次,您可以使用此 XPath 1.0表达式://title[.=following::title][not(. = preceding::title)]
要查看差异,请考虑以下 XML(根据您的 DTD 无效,但作为示例仍然有用):
<r>
<title>a</title>
<title>b</title>
<title>c</title>
<title>a</title>
<title>a</title>
<title>b</title>
<title>b</title>
<title>b</title>
</r>
XPath #1 selects:
<title>a</title>
<title>b</title>
<title>a</title>
<title>a</title>
<title>b</title>
<title>b</title>
<title>b</title>
(示例中除 c
title
之外的所有 title
元素)
XPath #2 selects:
<title>a</title>
<title>b</title>
两者都可能符合您的目的,具体取决于您需要对结果执行的操作。