Как считать following-sibling::*[1][self::disp-quote]
позиция ПРИМЕР S / B ПРИМЕР 1
Входной файл
<?xml version="1.0" encoding="UTF-8"?>
<sec>
<title>Title</title>
<p>vlvvnlfjkvv</p>
<disp-quote><p content-type="example"><bold>EXAMPLE</bold> aaaaaaa</p></disp-quote>
<disp-quote><p content-type="example"><bold>EXAMPLE</bold> aaaaaaa</p></disp-quote>
<disp-quote><p content-type="example"><bold>EXAMPLE</bold> aaaaaaa</p></disp-quote>
<p>aaaaaa</p>
<p>aaaaaa</p>
<disp-quote><p content-type="example"><bold>EXAMPLE</bold> aaaaaaa</p></disp-quote>
<p>vvvkvuvhv</p>
</sec>
Ожидаемый результат
<?xml version="1.0" encoding="UTF-8"?>
<sec>
<title>Title</title>
<p>vlvvnlfjkvv</p>
<disp-quote><p content-type="example"><bold>EXAMPLE 1</bold> aaaaaaa</p></disp-quote>
<disp-quote><p content-type="example"><bold>EXAMPLE 2</bold> aaaaaaa</p></disp-quote>
<disp-quote><p content-type="example"><bold>EXAMPLE 3</bold> aaaaaaa</p></disp-quote>
<p>aaaaaa</p>
<p>aaaaaa</p>
<disp-quote><p content-type="example"><bold>EXAMPLE</bold> aaaaaaa</p></disp-quote>
<p>vvvkvuvhv</p>
</sec>
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:template match="bold">
<bold aid:cstyle="bold">
<xsl:apply-templates />
<xsl:if test=".='EXAMPLE' and ancestor::disp-quote[following-sibling::*[1][self::disp-quote]]">
<xsl:for-each select="ancestor::disp-quote[following-sibling::*[1][self::disp-quote]]">
<xsl:value-of select="count(ancestor::disp-quote[following-sibling::*[1][self::disp-quote]])+1"/>
</xsl:for-each>
</xsl:if>
</bold>
</xsl:template>
</xsl:stylesheet>
Редактировать из комментариев :
Мой ожидаемый результат только в том случае, если он приходит с disp-quote с такими же последующими одноименными disp-quote, а затем добавляется с помощью position () Пример 1, Пример 2, Пример 3. Если он приходит в виде одинарной disp-quote, то Без изменений только Example.