以下内容似乎包装/分组了输入示例的正确节点,但我不确定它是否实现了您的要求,我还不太理解它们。
<xsl:template match="root">
<xsl:copy>
<xsl:for-each-group select="*" group-starting-with="p[@class = 'p']">
<xsl:copy>
<xsl:apply-templates select="node(), current-group() except ."/>
</xsl:copy>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>