# Package net.sf.saxon.expr.number

This package provides classes associated with numbering and the `xsl:number` instruction.

It is possible to extend the range of numberings available by providing a Numberer for a specific language. This must be registered with the `Configuration`. In earlier releases, there was a fixed relationship between the language and the implementing class (the Numberer was always named Numberer_xx where xx is the language code, corresponding to the value of the lang attribute in `xsl:number`). From Saxon 9.2, this relationship no longer exists.

These classes also include code to support the localization of dates as defined in the XSLT `format-dateTime()` group of functions.

The class `Numberer_en` provides the standard numbering options. As well as the format tokens defined in the XSLT 1.0 specification (for example, "1", "001", "a", "i") it supports other numbering options including:

- Greek upper and lower case letters
  Cyrillic upper and lower case letters
  Hebrew letters
  Japanese: Hiragana-A, Hiragana-B, Katakana-A, or Katakana-B letters, and Kanji digits
  English words: the format token "one" produces numbers such as "twenty five"

Localizations for a number of European languages are provided in package `net.sf.saxon.option.local`. In Saxon-PE and Saxon-EE these are issued in binary form as part of the Saxon JAR. For Saxon-HE, they are issued only in source code form.

- Class Summary
  Class | Description
  --- | ---
  AbstractNumberer | Class AbstractNumberer is a base implementation of Numberer that provides language-independent default numbering This supports the xsl:number element.
  Alphanumeric | This class contains static utility methods to test whether a character is alphanumeric, as defined by the rules of xsl:number: that is, whether it is in one of the Unicode categories Nd, Nl, No, Lu, Ll, Lt, Lm or Lo In Saxon 9.9 the data has been regenerated from Unicode 10.0.0.
  IrregularGroupFormatter | Handles grouping separators when formatting a number in cases where the grouping separators are not at regular intervals
  NamedTimeZone | This class attempts to identify a timezone name, given the date (including the time zone offset) and the country.
  Numberer_en | Numberer class for the English language.
  NumberFormatter | Class NumberFormatter defines a method to format a ArrayList of integers as a character string according to a supplied format specification.
  NumericGroupFormatter | A NumericGroupFormatter is responsible for insertion of grouping separators into a formatted number (for example, reformatting "1234" as "1,234").
  RegularGroupFormatter | A RegularGroupFormatter is a NumericGroupFormatter that inserts a separator at constant intervals through a number: for example, a comma after every three digits counting from the right.