public XslNumberFormatter(string format, string lang, string letterValue, char groupingSeparator, int groupingSize)
            {
                // We dont do any i18n now, so we ignore lang and letterValue.
                if (format == null || format == "")
                {
                    fmtList.Add(FormatItem.GetItem(null, "1", groupingSeparator, groupingSize));
                }
                else
                {
                    NumberFormatterScanner s = new NumberFormatterScanner(format);

                    string itm;
                    string sep = ".";

                    firstSep = s.Advance(false);
                    itm      = s.Advance(true);

                    if (itm == null) // Only separator is specified
                    {
                        sep      = firstSep;
                        firstSep = null;
                        fmtList.Add(FormatItem.GetItem(sep, "1", groupingSeparator, groupingSize));
                    }
                    else
                    {
                        // The first format item.
                        fmtList.Add(FormatItem.GetItem(".", itm, groupingSeparator, groupingSize));
                        do
                        {
                            sep = s.Advance(false);
                            itm = s.Advance(true);
                            if (itm == null)
                            {
                                lastSep = sep;
                                break;
                            }
                            fmtList.Add(FormatItem.GetItem(sep, itm, groupingSeparator, groupingSize));
                        }while (itm != null);
                    }
                }
            }