Speak.Me Учить иностранные слова

XSL: нумерация буквами различных алфавитов

Иногда в XSL возникает необходимость пронумеровать список символами национального алфавита. Для нумерации в XSL, как известно, используется инструкция xsl:number и по идее у этой инструкции есть атрибут lang, призванный как раз решить задачу нумерации символами национального алфавита. Но на практике XSL-процессоры редко поддерживают буквенную нумерацию алфавитом отличным от латиницы и атрибут lang в принципе бесполезен. Но есть другой способ получить нумерацию символами национального алфавита в XSL.

У инструкции xsl:number есть атрибут format, отвечающий за форматирование чисел в нумерации. Его значением является строкой и представляет собой что-то вроде маски форматирования. Она состоит из так называемых лексем – максимальных последовательностей буквенно-цифровых символов (т.е. букв и цифр) и максимальных последовательностей не буквенно-цифровых символов (т.е. не букв или цифр).

XSLT позволяет в атрибуте format вместо символов использовать их юникод-коды. Такие коды не будут рассматриваться процессором буквально, как последовательность отдельных символов. Как только XSLT-процессор встретит юникод-код символа, он тут же преобразует его в соответствующий символ, который уже и будет рассматриваться как символ той или иной лексемы. Поэтому для нумерации, например, русскими заглавными буквами нужно вставить в атрибут format код заглавной русской буквы «А» — А, а для нумерации русскими строчными буквами – код строчной русской буквы «а» — а.