Иногда в XSL возникает необходимость пронумеровать список символами национального алфавита. Для нумерации в XSL, как известно, используется инструкция xsl:number
и по идее у этой инструкции есть атрибут lang
, призванный как раз решить задачу нумерации символами национального алфавита. Но на практике XSL-процессоры редко поддерживают буквенную нумерацию алфавитом отличным от латиницы и атрибут lang
в принципе бесполезен. Но есть другой способ получить нумерацию символами национального алфавита в XSL.
У инструкции xsl:number
есть атрибут format
, отвечающий за форматирование чисел в нумерации. Его значением является строкой и представляет собой что-то вроде маски форматирования. Она состоит из так называемых лексем – максимальных последовательностей буквенно-цифровых символов (т.е. букв и цифр) и максимальных последовательностей не буквенно-цифровых символов (т.е. не букв или цифр).
XSLT позволяет в атрибуте format
вместо символов использовать их юникод-коды. Такие коды не будут рассматриваться процессором буквально, как последовательность отдельных символов. Как только XSLT-процессор встретит юникод-код символа, он тут же преобразует его в соответствующий символ, который уже и будет рассматриваться как символ той или иной лексемы. Поэтому для нумерации, например, русскими заглавными буквами нужно вставить в атрибут format
код заглавной русской буквы «А» — А
, а для нумерации русскими строчными буквами – код строчной русской буквы «а» — а
.