输入xml:
<entry>
<text>
<p>xyz</p>
<p>xyz</p>
<p>xyz</p>
<p>xyz</p>
<author>abc</author>
<p>xyz</p>
<p>xyz</p>
<p>xyz</p>
<author>abc</author>
</text>
</entry>
我正在使用 XSLT 1.0。
我想选择所有<p>
元素,直到下一个<author>
元素,并将它们(与下一个<author>
元素一起)分组在一个新<div>
元素下。所以预期的输出如下所示:
<entry>
<text>
<div>
<p>xyz</p>
<p>xyz</p>
<p>xyz</p>
<p>xyz</p>
<author>abc</author>
</div>
<div>
<p>xyz</p>
<p>xyz</p>
<p>xyz</p>
<author>abc</author>
</div>
</text>
</entry>
我试过这个解决方案:
<xsl:template match="entry">
<entry>
<text>
<div>
<xsl:apply-templates select="child::node()[not(preceding-sibling::author)]"/>
</div>
</text>
</entry>
</xsl:template>
这适用于第一组<p>
+ <author>
,但不适用于下一组。
我将不胜感激任何帮助。