Чтение онлайн

на главную - закладки

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

Областью нумерации этого метода будет множество всех узлов, следующих в порядке просмотра документа за первым предком текущего узла, который удовлетворяет паттерну, указанному в атрибуте

from
.

Номер вычисляется как

1
плюс количество узлов области подсчета, удовлетворяющих паттерну
count
и предшествующих в порядке просмотра документа текущему узлу.

Пример

В качестве примера применения метода

any
вычислим порядковый номер элемента
para
среди
всех элементов документа, начиная со второй главы. Инструкцию такого рода мы запишем в виде

<xsl:number

 format=" 1."

 level="any"

 count="*"

 from="chapter[2]"/>

При ее выполнении мы сначала определим область, в которой будут подсчитываться узлы (обведены штрих-пунктирной линией на рис. 8.10).

Рис. 8.10. Определение области подсчета узлов

Следующим шагом выделим подмножество области подсчета, предшествующее в порядке просмотра текущему узлу

para
(рис. 8.11).

Рис. 8.11. Первый шаг вычисления номера

Выделенное множество содержит 11 узлов, значит, искомый номер будет равен

12
.

Перед тем, как перейти к рассмотрению способов форматирования номеров, приведем итоговый пример (листинг 8.34), в котором в шаблонах будут использоваться все три метода нумерации.

Листинг 8.34. Шаблон, использующий разные методы нумерации

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"»

 <xsl:template match="doc">

<xsl:text>Resulting document&#xA;</xsl:text>

<xsl:text>==================&#xA;</xsl:text>

<xsl:apply-templates select="chapter"/>

 </xsl:template>

 <xsl:template match="chapter">

<xsl:number format="1. "/>

<xsl:value-of select="@title"/>

<xsl:text>&#xA;</xsl:text>

<xsl:apply-templates select="section"/>

 </xsl:template>

 <xsl:template match="section">

<xsl:number format=" 1.1 "

level="multiple"

count="chapter|section"/>

<xsl:value-of select="@title"/>

<xsl:text>&#xA;</xsl:text>

<xsl:apply-templates select="para"/>

 </xsl:template>

 <xsl:template match="para">

<xsl:number

format=" a) "

level="any"

count="para"/>

<xsl:value-of select="."/>

<xsl:text>&#xA;</xsl:text>

 </xsl:template>

</xsl:stylesheet>

Опишем

словесно нумерацию, которая будет применяться в этом преобразовании.

□ Элементы

chapter
будут нумероваться в соответствии со своей позицией среди других элементов
chapter
того же уровня.

□ Элементы

section
будут нумероваться при помощи многоуровневой нумерации — номер будет состоять из номера элемента
chapter
и номера самого элемента
section
.

□ Элементы

para
будут нумероваться исходя из своей позиции среди всех остальных элементов
para
вне зависимости от того, на каких уровнях в документе они находятся.

Результатом применения этого преобразования к документу, приведенному в листинге 8.31, будет следующий текст.

Листинг 8.35. Выходящий документ

Resulting document

==================

1. First chapter

1.1 First section

a) paragraph 1

b) paragraph 2

c) paragraph 3

1.2. Second section

d) paragraph 4

e) paragraph 5

2. Second chapter

2.1 Third section

f) paragraph 6

g) paragraph 7

h) paragraph 8

i) paragraph 9

2.2 Forth section

j) paragraph 10

k) paragraph 11

l) paragraph 12

2.3 Fifth section

m) paragraph 13

n) paragraph 14

o) paragraph 15

p) paragraph 16

3. Third chapter

3.1 Sixth section

q) paragraph 17

r) paragraph 18

Поделиться:
Популярные книги

Изменяющий-Механик. Компиляция. Книги 1-18

Усманов Хайдарали
Собрание сочинений
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Изменяющий-Механик. Компиляция. Книги 1-18

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Восход. Солнцев. Книга IX

Скабер Артемий
9. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга IX

Газлайтер. Том 18

Володин Григорий Григорьевич
18. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 18

Ох уж этот Мин Джин Хо 2

Кронос Александр
2. Мин Джин Хо
Фантастика:
попаданцы
5.00
рейтинг книги
Ох уж этот Мин Джин Хо 2

Бастард

Майерс Александр
1. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард

Баоларг

Кораблев Родион
12. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Баоларг

Владыка морей ч.1

Чайка Дмитрий
10. Третий Рим
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Владыка морей ч.1

Черный Маг Императора 6

Герда Александр
6. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
7.00
рейтинг книги
Черный Маг Императора 6

Господин следователь. Книга пятая

Шалашов Евгений Васильевич
5. Господин следователь
Детективы:
исторические детективы
5.00
рейтинг книги
Господин следователь. Книга пятая

Барон не признает правила

Ренгач Евгений
12. Закон сильного
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Барон не признает правила

На границе империй. Том 10. Часть 7

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 7

Отверженный III: Вызов

Опсокополос Алексис
3. Отверженный
Фантастика:
фэнтези
альтернативная история
7.73
рейтинг книги
Отверженный III: Вызов

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4