bool ValidateValue(Common.SimpleDatatypeEnumeration datatype, string externalValue)
        {
            bool isValid    = false;
            var  comparator = new Modulo.Collect.OVAL.Common.comparators.OvalComparatorFactory().GetComparator(datatype);

            if ((variable.Items == null) || (variable.Items.Count() == 0))
            {
                isValid = true;
            }
            else
            {
                foreach (var possibleValue in variable.Items.OfType <PossibleValueType>().Cast <PossibleValueType>())
                {
                    isValid = comparator.Compare(possibleValue.Value, externalValue, Common.OperationEnumeration.equals);
                    if (isValid)
                    {
                        break;
                    }
                }

                if (!isValid)
                {
                    // loop through all the possible_restriction elements searching for a restriction
                    foreach (var possibleRestriction in variable.Items.OfType <PossibleRestrictionType>().Cast <PossibleRestrictionType>())
                    {
                        foreach (var restriction in possibleRestriction.Items)
                        {
                            isValid = comparator.Compare(restriction.Value, externalValue, restriction.operation);
                            if (isValid)
                            {
                                break;
                            }
                        }
                        if (isValid)
                        {
                            break;
                        }
                    }
                }
            }

            return(isValid);
        }
        private IEnumerable <string> ApplyRestriction(RestrictionType restriction, string value, Common.SimpleDatatypeEnumeration datatypeEnumeration, string restrictionHint)
        {
            List <string>   messages   = new List <string>();
            IOvalComparator comparator = new OvalComparatorFactory().GetComparator(datatypeEnumeration);

            if (!comparator.Compare(value, restriction.Value, restriction.operation))
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine(restrictionHint);
                sb.AppendLine(restriction.GetRestrictionMessage());
                messages.Add(sb.ToString());
            }
            return(messages);
        }