【发布时间】:2013-06-14 10:10:12
【问题描述】:
输入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>,但不适用于下一组。
我将不胜感激。
【问题讨论】:
-
因为第二行确实有前面的autor,所以不匹配。您是否考虑过在每个
之后放置 ? -
也许这篇文章可以帮助stackoverflow.com/questions/8435716/…
标签: xslt