コード例 #1
0
        private static void SetTargetCheckMatch(ItemIdentifier ii, string standard, ItemStandard std, string[] vals, int index)
        {
            if (vals.Length <= index)
            {
                return;
            }

            // Target may have a grade level suffix. If so, separate it and set both parts
            string target = vals[index];
            string grade;
            int    tlen   = target.Length;
            int    cursor = target.Length;

            while (cursor > 0 && char.IsDigit(target[cursor - 1]))
            {
                --cursor;
            }
            if (cursor > 0 && target[cursor - 1] == '-')
            {
                cursor--;
                grade  = target.Substring(cursor + 1);
                target = target.Substring(0, cursor);
            }
            else
            {
                grade = string.Empty;   // When target doesn't have a suffix, grade is empty
            }

            SetCheckMatch(ii, "Target", standard, ref std.Target, target);
            SetCheckMatch(ii, "Grade", standard, ref std.Grade, grade);
        }
コード例 #2
0
        public void Init()
        {
            if (Standard == null)
            {
                return;
            }
            switch (Standard.StandardType)
            {
            case StandardType.Numeric:
                NumericStandard numericStandard = Standard as NumericStandard;
                if (numericStandard == null)
                {
                    return;
                }
                UCTextBoxStandardValue ucTextBoxStandardValue = new UCTextBoxStandardValue();
                ucTextBoxStandardValue.NumericStandard = numericStandard;
                BorderValue.Child = ucTextBoxStandardValue;
                ucTextBoxStandardValue.Init();
                break;

            case StandardType.YesNo:
                YesNoStandard yesNoStandard = Standard as YesNoStandard;
                if (yesNoStandard == null)
                {
                    return;
                }
                UCYesNoStandardValue ucYesNoStandardValue = new UCYesNoStandardValue();
                ucYesNoStandardValue.YesNoStandard = yesNoStandard;
                BorderValue.Child = ucYesNoStandardValue;
                ucYesNoStandardValue.Init();
                break;

            case StandardType.Item:
                ItemStandard itemStandard = Standard as ItemStandard;
                if (itemStandard == null)
                {
                    return;
                }
                UCComboStandardValue ucComboStandardValue = new UCComboStandardValue();
                ucComboStandardValue.ItemStandard = itemStandard;
                BorderValue.Child = ucComboStandardValue;
                ucComboStandardValue.Init();
                break;

            case StandardType.Slider:
                SliderStandard sliderStandard = Standard as SliderStandard;
                if (sliderStandard == null)
                {
                    return;
                }
                UCSliderStandardValue ucSliderStandardValue = new UCSliderStandardValue();
                ucSliderStandardValue.SliderStandard = sliderStandard;
                BorderValue.Child = ucSliderStandardValue;
                ucSliderStandardValue.Init();
                break;
            }
            ScoreObject_OnPropertyChanged(this, null);
        }
コード例 #3
0
        private void CreateScoreItemValue()
        {
            if (Standard == null)
            {
                return;
            }
            if (ViewClassic == ScoreItemClassic.Table)
            {
                GridTable.Visibility = Visibility.Visible;
                GridTree.Visibility  = Visibility.Collapsed;
                switch (Standard.StandardType)
                {
                case StandardType.Numeric:
                    NumericStandard numericStandard = Standard as NumericStandard;
                    if (numericStandard == null)
                    {
                        return;
                    }
                    TextBoxStandardValueViewer textBoxStandardValue = new TextBoxStandardValueViewer();
                    textBoxStandardValue.ViewClassic     = Standard.ViewClassic;
                    textBoxStandardValue.Settings        = Settings;
                    textBoxStandardValue.LangID          = LangID;
                    textBoxStandardValue.Languages       = Languages;
                    textBoxStandardValue.NumericStandard = numericStandard;
                    BorderValueTable.Child = textBoxStandardValue;
                    break;

                case StandardType.YesNo:
                    YesNoStandard yesNoStandard = Standard as YesNoStandard;
                    if (yesNoStandard == null)
                    {
                        return;
                    }
                    RadioYesNoStandardValueViewer yesNoStandardValue = new RadioYesNoStandardValueViewer();
                    yesNoStandardValue.ViewClassic   = Standard.ViewClassic;
                    yesNoStandardValue.Settings      = Settings;
                    yesNoStandardValue.LangID        = LangID;
                    yesNoStandardValue.Languages     = Languages;
                    yesNoStandardValue.YesNoStandard = yesNoStandard;
                    BorderValueTable.Child           = yesNoStandardValue;
                    break;

                case StandardType.Item:
                    ItemStandard itemStandard = Standard as ItemStandard;
                    if (itemStandard == null)
                    {
                        return;
                    }
                    DropDownItemStandardValueViewer dropDownItemStandardValue =
                        new DropDownItemStandardValueViewer();
                    dropDownItemStandardValue.ViewClassic  = Standard.ViewClassic;
                    dropDownItemStandardValue.Settings     = Settings;
                    dropDownItemStandardValue.LangID       = LangID;
                    dropDownItemStandardValue.Languages    = Languages;
                    dropDownItemStandardValue.ItemStandard = itemStandard;
                    BorderValueTable.Child = dropDownItemStandardValue;
                    break;

                case StandardType.Slider:
                    SliderStandard sliderStandard = Standard as SliderStandard;
                    if (sliderStandard == null)
                    {
                        return;
                    }
                    SliderStandardValueViewer sliderStandardValue = new SliderStandardValueViewer();
                    sliderStandardValue.ViewClassic    = Standard.ViewClassic;
                    sliderStandardValue.Settings       = Settings;
                    sliderStandardValue.LangID         = LangID;
                    sliderStandardValue.Languages      = Languages;
                    sliderStandardValue.SliderStandard = sliderStandard;
                    BorderValueTable.Child             = sliderStandardValue;
                    break;
                }
            }
            else
            {
                GridTable.Visibility = Visibility.Collapsed;
                GridTree.Visibility  = Visibility.Visible;
                switch (Standard.StandardType)
                {
                case StandardType.Numeric:
                    NumericStandard numericStandard = Standard as NumericStandard;
                    if (numericStandard == null)
                    {
                        return;
                    }
                    TextBoxStandardValueViewer textBoxStandardValue = new TextBoxStandardValueViewer();
                    textBoxStandardValue.ViewClassic     = Standard.ViewClassic;
                    textBoxStandardValue.Settings        = Settings;
                    textBoxStandardValue.LangID          = LangID;
                    textBoxStandardValue.Languages       = Languages;
                    textBoxStandardValue.NumericStandard = numericStandard;
                    BorderValueTree.Child = textBoxStandardValue;
                    break;

                case StandardType.YesNo:
                    YesNoStandard yesNoStandard = Standard as YesNoStandard;
                    if (yesNoStandard == null)
                    {
                        return;
                    }
                    RadioYesNoStandardValueViewer yesNoStandardValue = new RadioYesNoStandardValueViewer();
                    yesNoStandardValue.ViewClassic   = Standard.ViewClassic;
                    yesNoStandardValue.Settings      = Settings;
                    yesNoStandardValue.LangID        = LangID;
                    yesNoStandardValue.Languages     = Languages;
                    yesNoStandardValue.YesNoStandard = yesNoStandard;
                    BorderValueTree.Child            = yesNoStandardValue;
                    break;

                case StandardType.Item:
                    ItemStandard itemStandard = Standard as ItemStandard;
                    if (itemStandard == null)
                    {
                        return;
                    }
                    DropDownItemStandardValueViewer dropDownItemStandardValue = new DropDownItemStandardValueViewer();
                    dropDownItemStandardValue.ViewClassic  = Standard.ViewClassic;
                    dropDownItemStandardValue.Settings     = Settings;
                    dropDownItemStandardValue.LangID       = LangID;
                    dropDownItemStandardValue.Languages    = Languages;
                    dropDownItemStandardValue.ItemStandard = itemStandard;
                    BorderValueTree.Child = dropDownItemStandardValue;
                    break;

                case StandardType.Slider:
                    SliderStandard sliderStandard = Standard as SliderStandard;
                    if (sliderStandard == null)
                    {
                        return;
                    }
                    SliderStandardValueViewer sliderStandardValue = new SliderStandardValueViewer();
                    sliderStandard.ViewClassic         = Standard.ViewClassic;
                    sliderStandardValue.Settings       = Settings;
                    sliderStandardValue.LangID         = LangID;
                    sliderStandardValue.Languages      = Languages;
                    sliderStandardValue.SliderStandard = sliderStandard;
                    BorderValueTree.Child = sliderStandardValue;
                    break;
                }
            }
        }
コード例 #4
0
ファイル: LoadScoreObjectcs.cs プロジェクト: chenmj201601/UMP
        private OperationReturn LoadStandardItem(SessionInfo session, ItemStandard itemStandard)
        {
            OperationReturn optReturn = new OperationReturn();

            optReturn.Result = true;
            optReturn.Code   = 0;
            try
            {
                string     rentToken  = session.RentInfo.Token;
                ScoreSheet scoreSheet = itemStandard.ScoreSheet;
                if (scoreSheet == null)
                {
                    optReturn.Result  = false;
                    optReturn.Code    = Defines.RET_OBJECT_NULL;
                    optReturn.Message = string.Format("ScoreSheet is null");
                    return(optReturn);
                }
                string  strSql;
                DataSet objDataSet;
                switch (session.DBType)
                {
                case 2:
                    strSql =
                        string.Format(
                            "SELECT * FROM T_31_003_{0} WHERE C002 = {1}",
                            rentToken,
                            itemStandard.ID);
                    optReturn = MssqlOperation.GetDataSet(session.DBConnectionString, strSql);
                    if (!optReturn.Result)
                    {
                        return(optReturn);
                    }
                    objDataSet = optReturn.Data as DataSet;
                    break;

                case 3:
                    strSql =
                        string.Format(
                            "SELECT * FROM T_31_003_{0} WHERE C002 = {1}",
                            rentToken,
                            itemStandard.ID);
                    optReturn = OracleOperation.GetDataSet(session.DBConnectionString, strSql);
                    if (!optReturn.Result)
                    {
                        return(optReturn);
                    }
                    objDataSet = optReturn.Data as DataSet;
                    break;

                default:
                    optReturn.Result  = false;
                    optReturn.Code    = Defines.RET_PARAM_INVALID;
                    optReturn.Message = string.Format("DBType invalid");
                    return(optReturn);
                }
                if (objDataSet == null || objDataSet.Tables.Count <= 0)
                {
                    optReturn.Result  = false;
                    optReturn.Code    = Defines.RET_OBJECT_NULL;
                    optReturn.Message = string.Format("DataSet is null or DataTables empty");
                    return(optReturn);
                }
                List <StandardItem> listStandardItems = new List <StandardItem>();
                for (int i = 0; i < objDataSet.Tables[0].Rows.Count; i++)
                {
                    DataRow      dr           = objDataSet.Tables[0].Rows[i];
                    StandardItem standardItem = new StandardItem();
                    standardItem.Type      = ScoreObjectType.StandardItem;
                    standardItem.ID        = Convert.ToInt64(dr["C001"]);
                    standardItem.ScoreItem = itemStandard;
                    standardItem.OrderID   = Convert.ToInt32(dr["C004"]);
                    standardItem.Value     = Convert.ToDouble(dr["C005"]);
                    standardItem.Display   = dr["C006"].ToString();

                    listStandardItems.Add(standardItem);
                }
                optReturn.Data = listStandardItems;
            }
            catch (Exception ex)
            {
                optReturn.Result  = false;
                optReturn.Code    = Defines.RET_FAIL;
                optReturn.Message = ex.Message;
            }
            return(optReturn);
        }
コード例 #5
0
ファイル: LoadScoreObjectcs.cs プロジェクト: chenmj201601/UMP
        private OperationReturn LoadScoreItem(SessionInfo session, ScoreItem parent, string scoreID)
        {
            OperationReturn optReturn = new OperationReturn();

            optReturn.Result = true;
            optReturn.Code   = 0;
            try
            {
                string     rentToken  = session.RentInfo.Token;
                ScoreSheet scoreSheet = parent.ScoreSheet;
                if (scoreSheet == null)
                {
                    optReturn.Result  = false;
                    optReturn.Code    = Defines.RET_OBJECT_NULL;
                    optReturn.Message = string.Format("ScoreSheet is null");
                    return(optReturn);
                }
                string temp1 = string.Empty;
                string temp2 = string.Empty;
                if (!string.IsNullOrWhiteSpace(scoreID))
                {
                    temp1 = string.Format(",T3109.C005 AS NA");
                    temp2 = string.Format(" LEFT JOIN T_31_009_{0} T3109 ON T3102.C002=T3109.C002", rentToken);
                }
                string  strSql;
                DataSet objDataSet;
                switch (session.DBType)
                {
                case 2:
                    strSql = string.Format(
                        "SELECT T3102.*{4} FROM T_31_002_{0} T3102{5}  WHERE T3102.C003 = {1} AND T3102.C004 = {2}{3} ",
                        rentToken, scoreSheet.ID, parent.ID, scoreID, temp1, temp2);
                    optReturn = MssqlOperation.GetDataSet(session.DBConnectionString, strSql);
                    if (!optReturn.Result)
                    {
                        return(optReturn);
                    }
                    objDataSet = optReturn.Data as DataSet;
                    break;

                case 3:
                    strSql = string.Format(
                        "SELECT T3102.*{4} FROM T_31_002_{0} T3102{5} WHERE T3102.C003 = {1} AND T3102.C004 = {2}{3} ",
                        rentToken, scoreSheet.ID, parent.ID, scoreID, temp1, temp2);
                    optReturn = OracleOperation.GetDataSet(session.DBConnectionString, strSql);
                    if (!optReturn.Result)
                    {
                        return(optReturn);
                    }
                    objDataSet = optReturn.Data as DataSet;
                    break;

                default:
                    optReturn.Result  = false;
                    optReturn.Code    = Defines.RET_PARAM_INVALID;
                    optReturn.Message = string.Format("DBType invalid");
                    return(optReturn);
                }
                if (objDataSet == null || objDataSet.Tables.Count <= 0)
                {
                    optReturn.Result  = false;
                    optReturn.Code    = Defines.RET_OBJECT_NULL;
                    optReturn.Message = string.Format("DataSet is null or DataTables empty");
                    return(optReturn);
                }
                List <ScoreItem> listItems = new List <ScoreItem>();
                for (int i = 0; i < objDataSet.Tables[0].Rows.Count; i++)
                {
                    DataRow   dr = objDataSet.Tables[0].Rows[i];
                    ScoreItem scoreItem;
                    bool      isStandard = dr["C009"].ToString() == "Y";
                    if (isStandard)
                    {
                        Standard     standard     = null;
                        StandardType standardType = (StandardType)Convert.ToInt32(dr["C015"]);
                        switch (standardType)
                        {
                        case StandardType.Numeric:
                            NumericStandard numericStandard = new NumericStandard();
                            numericStandard.Type         = ScoreObjectType.NumericStandard;
                            numericStandard.MaxValue     = Convert.ToDouble(dr["C027"]);
                            numericStandard.MinValue     = Convert.ToDouble(dr["C028"]);
                            numericStandard.DefaultValue = string.IsNullOrWhiteSpace(dr["C029"].ToString()) ? 0 : Convert.ToDouble(dr["C029"]);
                            numericStandard.ScoreClassic = StandardClassic.TextBox;
                            standard = numericStandard;
                            break;

                        case StandardType.YesNo:
                            YesNoStandard yesNoStandard = new YesNoStandard();
                            yesNoStandard.Type = ScoreObjectType.YesNoStandard;
                            if (string.IsNullOrWhiteSpace(dr["C029"].ToString()))
                            {
                                yesNoStandard.DefaultValue = false;
                            }
                            else
                            {
                                if (Convert.ToDouble(dr["C029"]) == 1.0)
                                {
                                    yesNoStandard.DefaultValue = true;
                                }
                                else
                                {
                                    yesNoStandard.DefaultValue = false;
                                }
                            }
                            yesNoStandard.ReverseDisplay = dr["C104"].ToString() == "1";
                            yesNoStandard.ScoreClassic   = StandardClassic.YesNo;
                            standard = yesNoStandard;
                            break;

                        case StandardType.Slider:
                            SliderStandard sliderStandard = new SliderStandard();
                            sliderStandard.Type         = ScoreObjectType.SliderStandard;
                            sliderStandard.MinValue     = Convert.ToDouble(dr["C023"]);
                            sliderStandard.MaxValue     = Convert.ToDouble(dr["C024"]);
                            sliderStandard.Interval     = Convert.ToDouble(dr["C026"]);
                            sliderStandard.DefaultValue = string.IsNullOrWhiteSpace(dr["C029"].ToString()) ? 0 : Convert.ToDouble(dr["C029"]);
                            sliderStandard.ScoreClassic = StandardClassic.Slider;
                            standard = sliderStandard;
                            break;

                        case StandardType.Item:
                            ItemStandard itemStandard = new ItemStandard();
                            itemStandard.Type         = ScoreObjectType.ItemStandard;
                            itemStandard.ScoreClassic = StandardClassic.DropDownList;
                            itemStandard.DefaultIndex = string.IsNullOrWhiteSpace(dr["C029"].ToString())?0: Convert.ToInt32(dr["C029"]);
                            standard = itemStandard;
                            break;
                        }
                        if (standard == null)
                        {
                            optReturn.Result  = false;
                            optReturn.Code    = Defines.RET_OBJECT_NULL;
                            optReturn.Message = string.Format("Standard is null");
                            return(optReturn);
                        }
                        standard.PointSystem    = Convert.ToDouble(dr["C018"]);
                        standard.StandardType   = standardType;
                        standard.IsAutoStandard = dr["C101"].ToString() == "Y";
                        if (!string.IsNullOrWhiteSpace(scoreID))
                        {
                            if (string.IsNullOrWhiteSpace(dr["NA"].ToString()))
                            {
                                standard.IsNA = false;
                            }
                            else
                            {
                                standard.IsNA = dr["NA"].ToString() == "Y" ? true : false;
                            }
                        }
                        string strStaID = dr["C102"].ToString();
                        long   staID;
                        if (long.TryParse(strStaID, out staID))
                        {
                            standard.StatisticalID = staID;
                        }
                        scoreItem = standard;
                    }
                    else
                    {
                        ScoreGroup scoreGroup = new ScoreGroup();
                        scoreGroup.Type  = ScoreObjectType.ScoreGroup;
                        scoreGroup.IsAvg = dr["C016"].ToString() == "Y";
                        scoreItem        = scoreGroup;
                    }
                    scoreItem.ScoreSheet     = parent.ScoreSheet;
                    scoreItem.Parent         = parent;
                    scoreItem.ItemID         = Convert.ToInt32(dr["C001"]);
                    scoreItem.ID             = Convert.ToInt64(dr["C002"]);
                    scoreItem.OrderID        = Convert.ToInt32(dr["C005"]);
                    scoreItem.Title          = dr["C006"].ToString();
                    scoreItem.Description    = dr["C007"].ToString();
                    scoreItem.TotalScore     = Convert.ToDouble(dr["C008"]);
                    scoreItem.IsAbortScore   = dr["C010"].ToString() == "Y";
                    scoreItem.ControlFlag    = dr["C011"].ToString() == "Y" ? 1 : 0;
                    scoreItem.IsKeyItem      = dr["C012"].ToString() == "Y";
                    scoreItem.IsAllowNA      = dr["C013"].ToString() == "Y";
                    scoreItem.IsJumpItem     = dr["C014"].ToString() == "Y";
                    scoreItem.IsAddtionItem  = dr["C017"].ToString() == "Y";
                    scoreItem.UsePointSystem = dr["C019"].ToString() == "Y";
                    scoreItem.ScoreType      = dr["C020"].ToString() == "F"
                        ? ScoreType.YesNo
                        : dr["C020"].ToString() == "P" ? ScoreType.Pecentage : ScoreType.Numeric;
                    scoreItem.Tip = dr["C022"].ToString();
                    scoreItem.AllowModifyScore = dr["C103"].ToString() == "Y";

                    #region 子项

                    //如果是 ScoreGroup 加载子项
                    if (!isStandard)
                    {
                        ScoreGroup scoreGroup = scoreItem as ScoreGroup;
                        optReturn = LoadScoreItem(session, scoreGroup, scoreID);
                        if (!optReturn.Result)
                        {
                            return(optReturn);
                        }
                        List <ScoreItem> subItems = optReturn.Data as List <ScoreItem>;
                        if (subItems == null)
                        {
                            optReturn.Result  = false;
                            optReturn.Code    = Defines.RET_OBJECT_NULL;
                            optReturn.Message = string.Format("ListItems is null");
                            return(optReturn);
                        }
                        for (int j = 0; j < subItems.Count; j++)
                        {
                            ScoreItem subItem = subItems[j];
                            scoreGroup.Items.Add(subItem);
                        }
                        scoreGroup.Items = scoreGroup.Items.OrderBy(j => j.OrderID).ToList();
                    }

                    //如果是多值型评分标准,加载评分标准子项
                    ItemStandard temp = scoreItem as ItemStandard;
                    if (temp != null)
                    {
                        optReturn = LoadStandardItem(session, temp);
                        if (!optReturn.Result)
                        {
                            return(optReturn);
                        }
                        List <StandardItem> valueItems = optReturn.Data as List <StandardItem>;
                        if (valueItems == null)
                        {
                            optReturn.Result  = false;
                            optReturn.Code    = Defines.RET_OBJECT_NULL;
                            optReturn.Message = string.Format("ValueItems is null");
                            return(optReturn);
                        }
                        for (int j = 0; j < valueItems.Count; j++)
                        {
                            StandardItem valueItem = valueItems[j];
                            temp.ValueItems.Add(valueItem);
                        }
                        temp.ValueItems = temp.ValueItems.OrderBy(j => j.OrderID).ToList();
                    }

                    #endregion


                    #region 备注

                    OperationReturn commentReturn;
                    commentReturn = LoadComment(session, scoreItem);
                    if (!commentReturn.Result)
                    {
                        return(commentReturn);
                    }
                    List <Comment> listComments = commentReturn.Data as List <Comment>;
                    if (listComments == null)
                    {
                        optReturn.Result  = false;
                        optReturn.Code    = Defines.RET_OBJECT_NULL;
                        optReturn.Message = string.Format("listComments is null");
                        return(optReturn);
                    }
                    for (int j = 0; j < listComments.Count; j++)
                    {
                        Comment comment = listComments[j];
                        scoreItem.Comments.Add(comment);
                    }
                    scoreItem.Comments = scoreItem.Comments.OrderBy(j => j.OrderID).ToList();

                    #endregion

                    #region 样式

                    OperationReturn styleReturn;
                    styleReturn = LoadVisualStyle(session, scoreItem, "T");
                    if (!styleReturn.Result)
                    {
                        if (styleReturn.Code != Defines.RET_NOT_EXIST)
                        {
                            return(styleReturn);
                        }
                        scoreItem.TitleStyle = null;
                    }
                    else
                    {
                        VisualStyle style = styleReturn.Data as VisualStyle;
                        if (style != null)
                        {
                            style.ScoreSheet     = scoreSheet;
                            scoreItem.TitleStyle = style;
                        }
                    }

                    styleReturn = LoadVisualStyle(session, scoreItem, "P");
                    if (!styleReturn.Result)
                    {
                        if (styleReturn.Code != Defines.RET_NOT_EXIST)
                        {
                            return(styleReturn);
                        }
                        scoreItem.PanelStyle = null;
                    }
                    else
                    {
                        VisualStyle style = styleReturn.Data as VisualStyle;
                        if (style != null)
                        {
                            style.ScoreSheet     = scoreSheet;
                            scoreItem.PanelStyle = style;
                        }
                    }

                    #endregion

                    listItems.Add(scoreItem);
                }
                optReturn.Data = listItems;
            }
            catch (Exception ex)
            {
                optReturn.Result  = false;
                optReturn.Code    = Defines.RET_FAIL;
                optReturn.Message = ex.Message;
            }
            return(optReturn);
        }
コード例 #6
0
        private static void Extract(ItemIdentifier ii, IXPathNavigable metadata, string standard, List <ItemStandard> result)
        {
            XPathNavigator   root           = metadata.CreateNavigator();
            ItemStandard     std            = new ItemStandard(); // A new standard has empty string for all values
            HashSet <string> stdEncountered = new HashSet <string>();
            HashSet <string> pubEncountered = new HashSet <string>();

            // Look at all values for the specified Primary or Secondary standard.
            // Merge values if different publications. Add values if same publication.
            foreach (XPathNavigator node in root.Select($".//sa:{standard}", s_nsMetadata))
            {
                // Check whether we have processed this standard yet. Skip if so.
                if (!stdEncountered.Add(node.Value))
                {
                    continue;
                }

                var parts = node.Value.Split(c_standardDelimiters);
                if (parts.Length < 2)
                {
                    ReportingUtility.ReportError(ii, ErrorCategory.Metadata, ErrorSeverity.Tolerable, $"{standard} metadata does not match expected format.", $"standard='{node.Value}'");
                    continue;
                }

                // If this publication has been encountered and the standard is not empty
                // add existing value to the list
                if (pubEncountered.Contains(parts[0]))
                {
                    if (!std.IsEmpty)
                    {
                        result.Add(std);
                        std = new ItemStandard();
                    }
                    pubEncountered.Clear();
                }

                // Set the common field
                if (string.IsNullOrEmpty(std.Standard))
                {
                    std.Standard = node.Value;
                }
                else
                {
                    std.Standard = string.Concat(std.Standard, ";", node.Value);
                }

                // Parse out the standard according to which publication
                switch (parts[0])
                {
                case "SBAC-MA-v4":
                case "SBAC-MA-v5":
                    std.Subject = cSubjectMath;
                    SetCheckMatch(ii, "Claim", std.Standard, ref std.Claim, parts, 1);
                    SetCheckMatch(ii, "ContentDomain", std.Standard, ref std.ContentDomain, parts, 2);
                    SetTargetCheckMatch(ii, std.Standard, std, parts, 3);
                    SetCheckMatch(ii, "Emphasis", std.Standard, ref std.Emphasis, parts, 4);
                    SetCheckMatch(ii, "CCSS", std.Standard, ref std.CCSS, parts, 5);
                    break;

                case "SBAC-MA-v6":
                    std.Subject = cSubjectMath;
                    SetCheckMatch(ii, "Claim", std.Standard, ref std.Claim, parts, 1);
                    SetCheckMatch(ii, "ContentCategory", std.Standard, ref std.ContentCategory, parts, 2);
                    SetCheckMatch(ii, "TargetSet", std.Standard, ref std.TargetSet, parts, 3);
                    SetTargetCheckMatch(ii, std.Standard, std, parts, 4);
                    break;

                case "SBAC-ELA-v1":
                    std.Subject = cSubjectEla;
                    SetCheckMatch(ii, "Claim", std.Standard, ref std.Claim, parts, 1);
                    SetTargetCheckMatch(ii, std.Standard, std, parts, 2);
                    SetCheckMatch(ii, "CCSS", std.Standard, ref std.CCSS, parts, 3);
                    break;
                }

                pubEncountered.Add(parts[0]);
            }
            if (!std.IsEmpty)
            {
                result.Add(std);
            }
        }