Я пытаюсь понять функции группировки в XSLT 2.0.Мой исходный документ -
<root>
<entry level="a" name="aaa"/>
<entry level="a" name="bbb"/>
<entry level="b" name="ccc"/>
<entry level="c" name="ddd"/>
<entry level="a" name="eee"/>
<entry level="a" name="fff"/>
<entry level="b" name="ggg"/>
</root>
, и результат должен выглядеть примерно так:
<section name="aaa"/>
<section name="bbb">
<section name="ccc">
<section name="ddd" />
</section>
</section>
<section name="eee"/>
<section name="fff">
<section name="ggg" />
</section>
То есть: если есть следующая запись с более глубоким уровнем (b глубже, чем a ,....) следующий раздел должен быть дочерним по отношению к текущему, если это тот же уровень, то это должен быть следующий родной брат.
Я пробовал с xsl:group-by select="entry" group-by="@level"
, что дает мне разумную группировку, но яне знаю, как открыть раздел, чтобы идти вниз, если есть спад.
Есть другой похожий вопрос , который гласит, что «В XSLT 2.0 было бы довольно легко сновые функции группировки. "- это может быть легко, но я не понимаю.