Могу ли я создать счетчик дочерних элементов в XSLT 1.0? - PullRequest
1 голос
/ 25 февраля 2020

Предоставляя следующий источник XML, у меня есть процессы a и b, работающие (источники и результаты ниже). Теперь, как мне добраться до ожидаемого экспоната c результаты ниже?

Дополнительные очки, если это можно сделать в естественном xslt 1.0, не прибегая к JAVA счетчику!

Любая помощь приветствуется, спасибо!

Источник XML:

             <A>
                <B/>
                <B/>
                <B/>
            </A>
            <A>
                <B/>
                <B/>
                <B/>
            </A>
            <A>
                <B/>
                <B/>
                <B/>
            </A>

[напр. 'a']

код:

        <xsl:for-each select="A"><xsl:text>&#xA;</xsl:text>
            <xsl:text>A_</xsl:text><xsl:value-of select="position()"/>
            <xsl:for-each select="B"><xsl:text>&#xA;</xsl:text>
                <xsl:text>  B_</xsl:text><xsl:value-of select="position()"/>
            </xsl:for-each>
        </xsl:for-each>

результаты:

A_1
    B_1
    B_2
    B_3
A_2
    B_1
    B_2
    B_3
A_3
    B_1
    B_2
    B_3

[ex. 'b']

код:

 <xsl:for-each select="A/B"><xsl:text>&#xA;</xsl:text>
        <xsl:text>  B_</xsl:text><xsl:value-of select="position()"/>
    </xsl:for-each>

результаты:

B_1
B_2
B_3
B_4
B_5
B_6
B_7
B_8
B_9

[ex. 'c']

код: ?????? (это то, что я ищу)

результаты (ожидаемые):

A_1
    B_1
    B_2
    B_3
A_2
    B_4
    B_5
    B_6
A_3
    B_7
    B_8
    B_9

1 Ответ

2 голосов
/ 25 февраля 2020

Используйте <xsl:number level="any"/> вместо position().

...