xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

Сквозная нумерация во вложенных xsl:for-each


Автор Сообщение
Ronaldo
Новичок

Зарегистрирован: 20.07.2009
Сообщения: 6

[13917] Пн Июл 20, 2009 05:09
Сквозная нумерация во вложенных xsl:for-each
xml:

Код:

<bibliography>
    <year value="2005">
        <book>
            <title>C++ for dummies</title>
        </book>
        <book>
            <title>Delphi for idiots</title>
        </book>
    </year>
    <year value="2009">
        <book>
            <title>Learn japaneese in 21 days</title>
        </book>
        <book>
            <title>Windows7 is simple</title>
        </book>
        <book>
            <title>Linux howto</title>
        </book>
    </year>
</bibliography>




xsl:

Код:

<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
    <xsl:template match="/">
        <table>
            <xsl:for-each select="bibliography/year">
                <tr>
                    <td>
                        <xsl:value-of select="@value" />
                        <ul>
                            <xsl:for-each select="book">
                                <li><xsl:value-of select="position()" />. <xsl:value-of select="title" /></li>
                            </xsl:for-each>
                        </ul>
                    </td>
                </tr>
            </xsl:for-each>
        </table>
    </xsl:template>
</xsl:stylesheet>




Выдача будет такая:

Код:

2005
    1. C++ for dummies
    2. Delphi for idiots

2009
    1. Learn japaneese in 21 days
    2. Windows7 is simple
    3. Linux howto




А мне нужно чтобы нумерация была сквозная, то есть вот так (обязательно средствами XSLT, а не XHTML):

Код:

2005
    1. C++ for dummies
    2. Delphi for idiots

2009
    3. Learn japaneese in 21 days
    4. Windows7 is simple
    5. Linux howto



Подскажите пожалуйста, как это сделать на примере моего xsl.
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[13918] Пн Июл 20, 2009 22:03

Код:

<xsl:for-each select="book">
  <li><xsl:value-of select="count(../preceding-sibling::year/book) + position()" />. <xsl:value-of select="title" /></li>
</xsl:for-each>


_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
Ronaldo
Новичок

Зарегистрирован: 20.07.2009
Сообщения: 6

[13919] Вт Июл 21, 2009 01:10

Привет, Vasilisk!

Спасибо, то что нужно!