xpath,从 (text) 开始,直到

xpath, start with (text) and following until

我有以下 html 结构:

<p><b> Some bold text which starts with xy <b>
<p> text
<p> text
<p><b> Next bold text <b>
<p> text
<p> text

我需要构建一个 xpath 来获取以 xy 开头的粗体文本之后的所有文本,直到下一个不以 xy 开头的粗体文本。到目前为止我的尝试:

"//p/*[starts-with(text()),'xy']/following::text()"

然而,这抓住了所有文本 - 以及下一个不以 xy 开头的粗体文本之后的文本。有什么建议吗?

我找到了一个似乎有效的解决方案:

"//p/b[starts-with(.,'xy')]/following::p[count(preceding::b) = 1]"

所以,诀窍就在这里柜台。权衡是通过将所有前面的 b 的计数器设置为 1,它不会比 b 之后以 xy 开头的第一个 b 更远,但是,它也包括那个 b 中的文本。这当然可以改进,但现在对我来说没问题。