Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > Инкрементация переменной в цикле


Автор: Royan 14.2.2006, 21:04
Имеем следующие документы
Код

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <child att="val1"/>
    <child att="val2"/>
    <child att="val3"/>
</root>


Код

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
    <xsl:template match="/">
        <xsl:variable name="i" select="0" />
        <xsl:for-each select="root/child">
            <xsl:value-of select="$i" />
            <xsl:variable name="i" select="$i + 1" />
            <xsl:value-of select="$i" />
            <xsl:text>&#xA;</xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>


Получаем выхлоп:
01
01
01

Мне же хотелось добится нормальной работы:
01
12
23

Как это сделать?

Автор: Beard 15.2.2006, 13:25
Такая штука - переменная не может менять своего значения.
Пользуй шаблоны с параметром - такая рекурсия.
Либо:
Код

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
    <xsl:template match="/">
        <xsl:for-each select="root/child">
            <xsl:value-of select="position() - 1" />
            <xsl:value-of select="position()" />
            <xsl:text>&#xA;</xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>


Если только нумерацию надо

Автор: Royan 15.2.2006, 19:58
Beard, Спасибо идею понял!

Автор: Greendrake 9.3.2006, 14:49
Цитата(Beard @ 15.2.2006, 13:25)
Такая штука - переменная не может менять своего значения.

Мда, блин какая же она тогда переменная? smile

Автор: Beard 9.3.2006, 15:23
Ну это не я придумал.
Так в спецификации написано


Автор: sergejzr 9.3.2006, 15:38
Переменная в XSL больше похожа на #define в с++ или static final в Java

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)