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

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

Жанры

Холзнер Стивен

Шрифт:

 </HEAD>

 <BODY>

<H1>

Planets sorted by density

</Н1>

<TABLE>

<TR>

<TD>Planet</TD>

<TD>Mass</TD>

<TD>Day</TD>

<TD>Density</TD>

</TR>

<TR>

<TD>Venus</TD>

<TD>.815</TD>

<TD>116.75</TD>

<TD>.943</TD>

</TR>

<TR>

<TD>Mercury</TD>

<TD>.0553</TD>

<TD>58.65</TD>

<TD>.983</TD>

</TR>

<TR>

<TD>Earth</TD>

<TD>1</TD>

<TD>1</TD>

<TD>1</TD>

</TR>

</TABLE>

 </BODY>

</HTML>

По умолчанию

<xsl:sort>
производит сортировку в алфавитном порядке, что означает, что «10» располагается перед «2». Для осуществления сортировки в числовом порядке установите атрибут типа данных в «number»:

<xsl:sort data-type="number" select="DENSITY"/>

Убывающий порядок сортировки задается установкой у элемента

<xsl:sort>
атрибута order в «descending». Можно также сортировать по значениям атрибута, например:

<xsl:apply-templates select="PLANETS>

 <xsl:sort select="@SIZE"/>

</xsl:apply-templates>

НОВОЕ В XSLT 2.0

Одним из важных преимуществ XSLT 2.0 является поддержка схем XML, и W3C планирует внести в XSLT 2.0 возможность сортировки по любому типу данных, определенному в схеме документа, так же, как сейчас можно сортировать по строкам или числам.

Сортировка по нескольким критериям

Стоит отметить, что при сортировке можно применять несколько критериев — для этого просто примените несколько элементов

<xsl:sort>
. Первый элемент
<xsl:sort>
 отсортирует данные по основному критерию, следующий элемент — по следующему основному критерию и т.д. Вот, например, как внутри элемента
<xsl:apply-templates>
можно отсортировать планеты сначала по расстоянию, а затем по плотности (при этом планеты с одинаковым расстоянием от Солнца будут отсортированы по плотности):

<xsl:apply-templates>

 <xsl:sort select="DISTANCE"/>

 <xsl:sort select="DENSITY"/>

</xsl:apply-templates>

На этом мы заканчиваем обсуждение сортировки, и я перехожу к сопутствующей теме: нумерации.

Элемент <xsl:number>

При помощи элемента

<xsl:number>
узлу в результирующем документе присваивается очередной номер. Например, можно перенумеровать абзацы в контракте или строфы в поэме. Можно даже перенумеровать части документа несколькими уровнями, как, например, «Paragraph 3.2.5.1.» и т.п.

Элемент

<xsl:number>
обладает следующими атрибутами:

• 

level
(необязательный). Определяет, как будут присваиваться последовательные числа. Устанавливается в «single» (один), «multiple» (несколько) или «any» (любой). Значение по умолчанию — «single»;

• 

count
(необязательный). Определяет, какие узлы нужно подсчитывать. Устанавливается в образец;

• 

from
(необязательный). Определяет точку начала отсчета. Устанавливается в образец;

• 

value
(необязательный). Форматируемое число;

• 

format
(необязательный). Определяет формат вывода. Устанавливается в шаблон значений атрибута, возвращающий строку форматирования;

• 

lang
(необязательный). Определяет язык, чьи соглашения следует использовать для нумерации. Устанавливается в код языка, который можно применять в атрибуте
xml:lang
;

• 

letter-value
(необязательный). Позволяет выбрать различные схемы нумерации. устанавливается в «alphabetical» (алфавитная) или «traditional» (обычная);

• 

grouping-separator
(необязательный). Символ для разделения групп разрядов — например, запятая. Устанавливается в шаблон значений атрибутов, возвращающий единственный символ;

• 

grouping-size
(необязательный). Количество разрядов в каждой группе — определяет место применения разделителя групп разрядов. Устанавливается в шаблон значений атрибутов, возвращающий число. 

СОВЕТ ПО НУМЕРАЦИИ

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

Существует три основных способа нумерации, в зависимости от установки атрибута уровня (

level
): «
single
», «
multiple
» или «
any
». В следующих разделах мы по очереди рассмотрим каждую из этих схем, начав с одноуровневой нумерации, которая установлена по умолчанию.

Одноуровневая нумерация

Одноуровневая нумерация — это простая нумерация, когда перенумеровываются узлы-братья на одном уровне. Этот тип нумерации установлен по умолчанию. В листинге 5.11 при помощи одноуровневой нумерации перенумеровываются планеты в

planets.xml
.

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

Наномашины, демоненок! Том 3

Новиков Николай Васильевич
3. Чего смотришь? Иди книгу читай
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наномашины, демоненок! Том 3

Обнуленный

Сухов Александр Евгеньевич
1. Дэн Шир
Фантастика:
боевая фантастика
попаданцы
7.00
рейтинг книги
Обнуленный

Травница Его Драконейшества

Рель Кейлет
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Травница Его Драконейшества

Матабар V

Клеванский Кирилл Сергеевич
5. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар V

Жребий брошен

Прозоров Александр Дмитриевич
10. Ведун
Фантастика:
фэнтези
8.90
рейтинг книги
Жребий брошен

Кодекс Охотника. Книга XXXV

Винокуров Юрий
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV

Кодекс Охотника. Книга V

Винокуров Юрий
5. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.50
рейтинг книги
Кодекс Охотника. Книга V

Прайм. Альянс

Бор Жорж
5. Легенда
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Прайм. Альянс

Мастер 6

Чащин Валерий
6. Мастер
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 6

Вперед в прошлое 5

Ратманов Денис
5. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 5

Кодекс Охотника. Книга XXXIV

Винокуров Юрий
34. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXIV

Кодекс Охотника. Книга XXVII

Винокуров Юрий
27. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XXVII

Сердце Дракона. Том 11

Клеванский Кирилл Сергеевич
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Сердце Дракона. Том 11

Осколки маски

Метельский Николай Александрович
7. Унесенный ветром
Фантастика:
боевая фантастика
альтернативная история
6.71
рейтинг книги
Осколки маски