XSL: обернуть содержимое между заданными <p>в <div> - PullRequest
0 голосов
/ 10 июля 2020

У меня есть сгенерированный файл XML с таким содержанием:

<p stylename='myStyle'/>
<p stylename='otherStyle'> Something </p>
<p stylename='anyotherStyle'> Something else </p>
<p stylename='myStyle'/>
<p stylename='otherStyle'> Something else </p>
...

Мне нужно, чтобы результат выглядел так:

<DIV stylename='myStyle'>
<p stylename='otherStyle'> Something </p>
<p stylename='anyotherStyle'> Something else </p>
</DIV>
<DIV stylename='myStyle'>
<p stylename='otherStyle'> Something else </p>
...
</DIV>

Подводя итог , У меня есть пустые теги <p> с именем стиля 'myStyle', и мне нужно, чтобы все содержимое между ними было заключено в <DIV>. Я не могу изменить ввод XML и могу использовать только XSLT 1.0

У меня есть базовые c знания XSLT, но я не могу понять, как это сделать. Есть предположения? Спасибо

1 Ответ

0 голосов
/ 13 июля 2020

В итоге я использовал код, как показано ниже, работает именно так, как мне нужно.

<xsl:template match="p[@stylename='myStyle']">
<div class="myStyle"><xsl:variable name="divID" select="generate-id(.)"/>
<xsl:for-each select="following-sibling::*[generate-id(preceding-sibling::p[@stylename='myStyle'][1]) = $divID]">
<xsl:apply-templates/>
</xsl:for-each>
</div>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...