在 GREL 中提取具有特定属性的 HTML 标签

问题描述

我可以在标签第一次出现时轻松提取

<skos:prefLabel> Espitaleta,Lina </skos:prefLabel>

并且每次出现:

<skos:prefLabel> Espitaleta,Lina </skos:prefLabel>
<skos:prefLabel xml:lang="en-US"> Espitaleta,Lina </skos:prefLabel>
<skos:prefLabel xml:lang="fr-FR"> Lina Espitaleta </skos:prefLabel>

但是如何只提取具有特定属性标签

<skos:prefLabel xml:lang="fr-FR"> Lina Espitaleta </skos:prefLabel>

谢谢

解决方法

根据您的示例,我猜测您正在寻找特定的属性值,而不仅仅是属性。

GREL 实现在内部使用 JSoup,因此您需要查看它们的 selector syntax 以了解如何执行此操作。类似的东西:

value.parseHtml().select(your selector here)

应该给你你想要的。在处理标记名称与属性名称中以不同方式处理的命名空间时存在细微差别,因此您需要以下内容:

value.parseHtml().select('skos|prefLabel[xml:lang="fr-FR"]')

如果您确实是指属性,而不是属性值,则可以将其简化为:

value.parseHtml().select('skos|prefLabel[xml:lang]')