Создание XSLT-группировки для последовательности элементов с указанным условием

Я новичок в xslt, мне нужно преобразовать xml в xml с группировкой

Мой ввод приведен ниже, поскольку мне нужно сгруппировать информацию, связанную с введением, которую все необходимо сгруппировать с элементом поля, и у меня есть блоки списка в качестве параметра с указанным атрибутом, который я должен сгруппировать как блок списка.

      <p style="Chap"></p>
<p style="ChapTitle"></p>
<p style="IntroHead">IntroHead</p>
<p style="IntroText">IntroText</p>
<p style="IntroText">IntroText</p>
<p style="IntroText">IntroText</p>
<p style="IntroLast">IntroLast</p>
<p style="Normal"></p>

<p style="Bullet">Bullet</p>
<p style="Bullet">Bullet</p>
<p style="Bullet">Bullet</p>
<p style="Bullet">Bullet</p>
<p style="Bullet">Bullet</p>
<p style="BulletLast">BulletLast</p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>

Мой ожидаемый результат

      <p style="Chap"></p>
<p style="ChapTitle"></p>
<box>
<title>IntroHead</title>
<list>
<li>IntroText</li>
<li>IntroText</li>
<li>IntroText</li>
<li>IntroLast</li>
</list>
</box>
<p style="Normal"></p>

<list style="bullet">
<li>Bullet</li>
<li>Bullet</li>
<li>Bullet</li>
<li>Bullet</li>
<li>Bullet</li>
<li>BulletLast</li>
</list>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal"></p>

1 ответ

Использоватьxsl:for-each-group/@group-adjacentгруппировать абзацы, имеющие одно и то же@style. Внутри телаxsl:for-each-groupсделатьxsl:choose: еслиcurrent-grouping-key()являетсяIntrotextилиbullet, оберните группу вlistэлемент, в противном случае скопируйте его без изменений.

Другие вопросы по тегам