Перейти к содержимому

Фотография
- - - - -

Редактирование сообщения в Вычисление позиции узла с помощью xsl:number. Проблема.


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
В этой теме нет ответов

#1 Maximario

Maximario

    Прохожий

    Топикстартер
  • Новичок
  • 0
    2 сообщ.

Отправлено 30 Июль 2015 в 16:09

Коллеги!

Изучаю XSLT по книге Алексея Валикова "Технология XSLT".

В ней есть такой пример на вычисление позиций узлов во входящем документе. Цель вычисления - вывести оглавление в результирующем документе.

Итак.

Входящий документ:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
    <chapter title="First chapter">
        <section title="First section">
            <para>paragraph 1</para>
            <para>paragraph 2</para>
            <para>paragraph 3</para>
        </section>
        <section title="Second section">
            <para>paragraph 4</para>
            <para>paragraph 5</para>
        </section>
    </chapter>
    <chapter title="Second chapter">
        <section title="Third section">
            <para>paragraph 6</para>
            <para>paragraph 7</para>
            <para>paragraph 8</para>
            <para>paragraph 9</para>
        </section>
        <section title="Forth section">
            <para>paragraph 10</para>
            <para>paragraph 11</para>
            <para>paragraph 12</para>
        </section>
        <section title="Fifth section">
            <para>paragraph 13</para>
            <para>paragraph 14</para>
            <para>paragraph 15</para>
            <para>paragraph 16</para>
        </section>
    </chapter>
    <chapter title="Third chapter">
        <section title="Sixth section">
            <para>paragraph 17</para>
            <para>paragraph 18</para>
        </section>
    </chapter>
</doc>

Преобразование:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="1.0">
    <xsl:template match="chapter">
        <xsl:number value="position()" format="1. " />
        <xsl:value-of select="@title"/>
        <xsl:text>&#xA;</xsl:text>
    </xsl:template>
</xsl:stylesheet>

На выходе получаем:

<?xml version="1.0" encoding="utf-8"?>
    2. First chapter

    4. Second chapter

    6. Third chapter

Помогите понять, почему позиции вычисляются "2, 4, 6", а не "1, 2, 3"?

В книге написано, что должно быть "1, 2, 3".


  • 0

Спонсор



Похожие темы Свернуть

Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей