Элемент xsl:number

Элемент xsl:number

Синтаксис элемента описывается следующей конструкцией:

<xsl:number

 level="single"

      | "multiple"

      | "any"

 count="паттерн"

 from="паттерн"

 value="выражение"

 format="{строка}"

 lang="{токен}"

 letter-value={ "alphabetic"

              | "traditional" }

 grouping-separator="{символ}"

 grouping-size="{число}"/>

Элемент xsl:number вычисляет номер узла в соответствии с заданными критериями, форматирует его и затем вставляет в результирующее дерево в виде текстового узла. То, что все это выполняется в одном элементе преобразования, имеет существенные преимущества по сравнению с использованием XPath-выражений: программа становится более простой и понятной, причем далеко не в ущерб функциональности.

К сожалению, в этом случае, как и во многих других, универсальность использования повлекла за собой семантическую сложность. Несмотря на то, что xsl:number имеет всего девять атрибутов (причем ни один из них не является обязательным), мы посвятим их описанию значительное количество страниц. Пока же, чтобы сориентировать читателя, мы кратко перечислим назначения атрибутов xsl:number.

? Атрибут level указывает, на каких уровнях дерева следует искать нумеруемые узлы.

? Атрибут count указывает, какие именно узлы следует считать при вычислении номера.

? Атрибут from указывает, в какой части документа будет производиться нумерация.

? Атрибут value задает выражения, которые следует использовать для вычисления значения номера.

? Атрибут format определяет, как номер будет форматироваться в строку.

? Атрибут lang задает языковой контекст нумерации.

? Атрибут letter-value определяет параметры буквенных методов нумерации.

? Атрибут grouping-separator задает символ, разделяющий группы цифр в номере.

? Атрибут grouping-size определяет количество цифр в одной группе.

Выполнение элемента xsl:number можно условно разделить на два этапа — вычисление номера и его строковое форматирование. На этапе вычисления активными являются элементы level, count, from и value. Форматирование производится с учетом значений атрибутов format, lang, letter-value, grouping-separator и grouping-size. Результатом первого этапа является список номеров, который форматируется в текстовый узел на втором этапе.