捕获以下节点直到特定节点

Capture Following Nodes Until Specific Node

我有这样的数据:

<h4>Test1</h4>
<p>test</p>
<div>test</div>
<p>test</p>
<h4>Test2</h4>
<p>test</p>
<div>test</div>
<p>test</p>
<h4>Test3</h4>
<p>test</p>
<div>test</div>
<p>test</p>

我正在尝试捕获一个 H4 的所有兄弟节点,直到我到达另一个 H4。

我目前正在使用:

<xsl:for-each select="//h4”>

<xsl:copy-of select="following-sibling::*[generate-id(preceding-sibling::h4[1]) = generate-id(current())]"/>

</xsl:for-each>

这有效,但它捕获了最后一个 h4 标签。我想排除那个 h4 标签。当前输出如下所示:

<p>test</p>
<div>test</div>
<p>test</p>
<h4>Test2</h4>

有没有办法不捕获h4?

您可以使用 following-sibling::*[not(self::h4)] 代替 following-sibling::*