private List <ValidationResult> ValidateSchematron(IValidator validator, ValidationContent content)
        {
            List <ValidationResult> results = new List <ValidationResult>();

            try
            {
                string            contentText       = ASCIIEncoding.UTF8.GetString(content.Data);
                ValidationResults validationResults = validator.Validate(contentText);

                results = (from schvr in validationResults.Messages
                           select new ValidationResult()
                {
                    ErrorMessage = schvr.Message,
                    FileName = content.FileName,
                    LineNumber = schvr.LineNumber,
                    Test = schvr.Test,
                    TestContext = schvr.Context,
                    Severity = schvr.Severity.ToString(),
                    XmlChunk = schvr.ContextContent
                }).ToList();
            }
            catch { }

            return(results);
        }
        private List <ValidationResult> ValidateInputXml(ValidationContent content, ValidationProfile profile)
        {
            string dataContent = System.Text.ASCIIEncoding.UTF8.GetString(content.Data);
            List <ValidationResult> results = new List <ValidationResult>();

            using (StringReader ms = new StringReader(dataContent))
            {
                XmlReader   sourceReader = XmlReader.Create(ms);
                XmlDocument sourceDoc    = new XmlDocument();

                try
                {
                    sourceDoc.LoadXml(dataContent);
                }
                catch (XmlException ex)
                {
                    results.Add(new ValidationResult()
                    {
                        FileName     = content.FileName,
                        ErrorMessage = "Could not load XML document: " + ex.Message
                    });
                    return(results);
                }

                XmlNamespaceManager nsManager = new XmlNamespaceManager(sourceDoc.NameTable);

                results.AddRange(
                    ValidateSchema(content.FileName, profile, content.Data, nsManager));

                results.AddRange(
                    ValidateSchematron(profile.SchematronValidator, content));
            }

            return(results);
        }