Элемент обладает следующими атрибутами:
• 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
.
Листинг 5.11. Одноуровневая нумерация
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
. |
|
|
|
.
.
.
А вот результат:
The Planets Table
The Planets Table
Name |
Mass |
Radius |
Day |
1. Mercury |
.0553 (Earth = 1) |
1516 miles |
58.65 days |
2. Venus |
.815 (Earth = 1) |
3716 miles |
116.75 days |
3. Earth |
1 (Earth = 1) |
2107 miles |
1 days |
Этот результат показан на рис. 5.2.
Рис. 5.2.Одноуровневая нумерация элементов
По умолчанию при нумерации используются числа, но есть и другие возможности. Например, если бы я использовал , планетам были бы присвоены буквы a, b и с:
The Planets Table
The Planets Table
.
.
.
Ниже приведены возможные в атрибуте format
лексемы и соответствующие им виды нумерации:
• 1порождает последовательность 1, 2, 3…;
• 01порождает последовательность 01, 02, 03…;
• другие числа Unicode в других системах счисления порождают последовательности аналогично двум предыдущим правилам;
• апорождает последовательность a, b, с…, аа, ab…;
• Апорождает последовательность А, В, С…, АА, АВ…;
• iпорождает последовательность i, ii, iii, iv…, ix, x, xi, xii…;
• Iпорождает последовательность I, II, III, IV…, IX, X, XI, XII…
Нумерация на произвольных уровнях
Иногда может потребоваться просто подсчитать узлы определенного типа независимо от их уровня в документе. Например, в различных местах иерархии документа не исключено наличие нескольких элементов , и вам может быть нужно просто трактовать документ как поток данных, подсчитывая встречающиеся элементы .
Вот как примерно это будет выглядеть, если в planets.xml
элементы встречаются на различных уровнях:
Planets Table
Mercury
Читать дальше