//private static void AddSchemaTo(
        //    Report report,
        //    XmlElement xmlRoot,
        //    SectionType detailtype,
        //    string localeid )
        //{
        //    foreach( XmlElement ele in xmlRoot.ChildNodes )
        //    {
        //        GroupSchema gs = GroupSchemas.GetGroupSchemaFromXml(
        //            ele,
        //            localeid );
        //        report.GroupSchemas.Add( gs );
        //        if( gs.bDefault )
        //            report.CurrentSchemaID = gs.ID ;
        //    }
        //}

        /// <summary>
        /// 从XML的GroupSchema元素构造一个分组对象
        /// </summary>
        private static GroupSchema GetGroupSchemaFromXml(
            XmlElement groupSchemaElement,
            string localeid)
        {
            GroupSchema gs = new GroupSchema();

            GroupSchemas.SetGroupSchemaProperty(localeid, gs, groupSchemaElement);

            int groupLevel = 0;

            foreach (XmlElement ele in groupSchemaElement.ChildNodes)
            {
                switch (ele.Name)
                {
                case GroupSchemas._xmlKeyMulitLangInfo:
                    GroupSchemas.SetGroupSchemaName(ele, gs);
                    break;

                case GroupSchemas._xmlKeySchemaItem:
                    groupLevel++;
                    gs.SchemaItems.Add(GroupSchemas.GetGroupSchemaItem(ele, groupLevel));
                    break;

                case GroupSchemas._xmlKeyDateDimensions:
                    SetDateDimensions(ele, gs);
                    break;

                case GroupSchemas._xmlKeyQuickSortItems:
                    SetQuickSortItems(ele, gs, false);
                    break;

                case GroupSchemas._xmlKeyQuickSortColumnItems:
                    SetQuickSortItems(ele, gs, true);
                    break;

                case GroupSchemas._xmlKeyCrossRowGroup:
                    gs.CrossRowGroup = GetGroupSchemaFromXml(ele, localeid);
                    break;

                default:
                    break;
                }
            }
            return(gs);
        }