Предположим, у меня есть следующая последовательность элементов:
<outer>
<e>…</e> <!-- Adjacent <e> should be grouped if they aren’t yet. -->
<e>…</e>
<group>
<e>…</e>
<e>…</e>
</group>
<e>…</e>
<e>…</e>
</outer>
И я хотел бы объединить те элементы <e>
, которые еще не были сгруппированы, т.е. результат будет
<outer>
<group-foo> <!-- Grouped elements. -->
<e>…</e>
<e>…</e>
</group-foo>
<group-bar>
<e>…</e>
<e>…</e>
</group-bar>
<group-foo>
<e>…</e>
<e>…</e>
</group-foo>
</outer>
Я просто не могу понять, как выбрать группу смежных элементов (набор узлов); Ближайшая идея заключалась в том, чтобы выбрать //e[name(parent::*) = 'outer']
или что-то подобное, но при этом предполагается наличие определенного родительского элемента, и он возвращает один набор узлов, тогда как мне нужно два.