данных по свойствам символов Unicode), а значение Unicode предшествующих символов меньше чем значение Unicode последнего символа, генерирует такое десятичное представление числа, что любое число будет не короче лексемы форматирования. Так, лексема форматирования 1 генерирует последовательность 1 2 … 10 11 12 … , а лексема форматирования 01 дает последовательность 01 02 … 09 10 11 12 … 99 100 101.
Лексема форматирования A генерирует последовательность A B C … Z AA AB AC… .
Лексема форматирования a генерирует последовательность a b c … z aa ab ac… .
Лексема форматирования i генерирует последовательность i ii iii iv v vi vii viii ix x … .
Лексема форматирования I генерирует последовательность I II III IV V VI VII VIII IX X ….
Любая другая лексема форматирования задает последовательность нумерации, которая начинается с указанной лексемы. Если реализация процессора не поддерживает последовательность нумерации, начинающуюся с этой лексемы, должна использоваться лексема форматирования 1.
Если нумерация выполняется последовательностью букв, атрибут lang указывает, алфавит какого языка следует использовать. Атрибут имеет тот же самый диапазон значений, что и xml:lang в [XML]. Если значение lang не было указано, язык следует определить из системного окружения. Разработчикам процессоров следует документировать, для каких языков поддерживается нумерация.
Замечание: Разработчики не должны выдвигать каких-либо предположений о порядке нумерации в тех или иных языках, и должны должным образом исследовать те языки, которые они берутся поддерживать. Порядок нумерации во многих языках сильно отличается от принятого в английском языке.
Атрибут letter-value устраняет неясности в последовательностях нумерации, использующих буквы. Во многих языках обычно используются две основные последовательности нумерации, использующие буквы. В одной из них нумерация производится буквенными значениями в алфавитном порядке, в другой же числовое значение каждому пункту назначается по- другому, так как это принято для данного языка. В английском языке это будет соответствовать последовательностям нумерации, задаваемым лексемами форматирования a и i . В некоторых языках первый член обеих последовательностей одинаков, а потому одной лексемы форматирования будет недостаточно. Значение alphabetic указывает алфавитную последовательность, значение traditional – альтернативную. Если атрибут letter-value не указан, порядок разрешения любых неоднозначностей определяется реализацией.
Замечание: Два процессора, отвечающие спецификации XSLT, могут преобразовывать число в разные строки. Некоторые XSLT процессоры не имеют поддержки некоторых языков. Более того, для любого конкретного языка могут отличаться способы преобразования, не специфицируемые атрибутами xsl:number . В будущих версиях XSLT могут появиться дополнительные атрибуты, дающие контроль над такими вариациями. Для этой же цели реализации могут также использовать в xsl:number атрибуты из пространства имён, привязанного к реализации.
Атрибут grouping-separator определяет разделитель для группировки в десятичной нумерации (например, тысяч). Необязательный атрибут grouping-size указывает размер для группировки (обычно, 3). Например, grouping-separator=',' и grouping-size='3' должны определить числа в формате 1,000,000 . Если указан только один из атрибутов grouping- separator или grouping-size , он игнорируется.
Некоторые примеры спецификаций преобразования:
format='ア' задает нумерацию Katakana
format='イ' задает нумерацию Katakana в последовательности «iroha»
format='๑' задает нумерацию тайскими цифрами
format='א' letter-value='traditional' задает «традиционную» еврейскую нумерацию
format='ა' letter-value='traditional' задает григорианскую нумерацию
format='α' letter-value='traditional' задает «классическую» греческую нумерацию
format='а' letter-value='traditional' задает старославянскую нумерацию