这是我的例子:
<div>
<p><em>Emphasized text</em> followed by any <span>other text</span> and ending with an <em>emphasized text</em></p>
</div>
我想要的是抓住这段以
em
开头并以em
结尾的段落。这些标签之间可能是文本,包括其他内联标签,如 span
、img
、a
等。
一个现实世界的例子可以是一些学术和报纸写作规则,当你必须强调已经强调的文本中的文本时,你取消强调中的强调,即作者介绍或参考书目:
如果我们有这样一句话: -- John Doe 是《强调中的强调》一书的作者。 -- 一种打印规则是这样写:
约翰·多伊 (John Doe) 是《强调中强调》一书的作者。 但是当你要打印这一段强调时,它就会变成:
约翰·多伊 (John Doe) 是强调中强调书的作者。 与参考书目演示相同:
John Doe,
强调内部强调,纽约,出版商名称,2024 年。 强调的变成:
John Doe,强调强调,纽约,出版商名称,2024 年。 考虑某些文本(作者、姓名、出版商名称或书名)可能锚定到链接。
这个问题是
上一个问题的延伸,我们只是在寻找一个以p
开始和结束的
em
。提供了一些答案,涵盖处理 p
后跟一个或多个 em
的简单或更复杂的情况,并且标签之间没有其他文本。这里的区别在于,标签之间有一些文本,但主要目的是相同的:段落的开头和结尾强调了中间可能存在的任何内容。//*[./*[1][name()="em"] and ./*[last()][name()="em"]]
同样使用
child
轴
//*[child::*[1][name()="em"] and child::*[last()][name()="em"]]
//p[node()[1][self::em]][node()[last()][self::em]]
将根据要求选择其子元素以
p
元素开头和结尾的所有
em
元素