我想通过顶级h1
标签将 XML(实际上是 XHTML)文档分成几部分。从第一个<h1>
到下一个的所有内容都应该包含在<section>
元素中,依此类推,直到文档结束。
例如,如果我有这个源文档:
<article>
<h1>Heading 1</h1>
<p>Some text</p>
<p>Some more text</p>
<h1>Heading 2</h1>
<p>Some text</p>
<h2>Subheading</h2>
<p>Some text</p>
<h1 id="heading3">Heading 3</h1>
<p>Some text</p>
</article>
我希望结果完全像这样:
<article>
<section>
<h1>Heading 1</h1>
<p>Some text</p>
<p>Some more text</p>
</section>
<section>
<h1>Heading 2</h1>
<p>Some text</p>
<h2>Subheading</h2>
<p>Some text</p>
</section>
<section>
<h1 id="heading3">Heading 3</h1>
<p>Some text</p>
</section>
</article>
问题是我只有 libxslt1.1(因此,XSLT 1.0 + EXSLT)。使用 XSLT 2.0,我可以做一些漂亮的事情,<xsl:for-each-group select="*" group-starting-with="h1">
但遗憾的是,这对我来说不是一个可行的选择。
我不想对属性值进行分组(我没有任何有意义的属性),因此,据我所知,Muenchian 分组对我来说不是一个技巧。不过,也许我错了——我几分钟前才读过这种方法。
有没有办法用 XSLT 1.0 实现这一点?