Esempio n. 1
0
        /*Function to validate the input document*/
        public void ValidateOutputFile(String outFile)
        {
            isValid = true;
            XmlTextReader       xml = new XmlTextReader(outFile);
            XmlValidatingReader xsd = new XmlValidatingReader(xml);

            try {
                xsd.ValidationType          = ValidationType.DTD;
                xsd.ValidationEventHandler += new ValidationEventHandler(MyValidationEventHandler);

                while (xsd.Read())
                {
                    errorText = xsd.ReadString();
                    if (errorText.Length > 100)
                    {
                        errorText = errorText.Substring(0, 100);
                    }
                }
                xsd.Close();

                Stream   stream = null;
                Assembly asm    = Assembly.GetExecutingAssembly();
                foreach (string name in asm.GetManifestResourceNames())
                {
                    if (name.EndsWith("Shematron.xsl"))
                    {
                        stream = asm.GetManifestResourceStream(name);
                        break;
                    }
                }

                XmlReader     rdr = XmlReader.Create(stream);
                XPathDocument doc = new XPathDocument(outFile);

                XslCompiledTransform trans = new XslCompiledTransform(false);
                trans.Load(rdr);

                XmlTextWriter myWriter = new XmlTextWriter(Path.GetDirectoryName(outFile) + "\\report.txt", null);
                trans.Transform(doc, null, myWriter);

                myWriter.Close();
                rdr.Close();

                StreamReader reader = new StreamReader(Path.GetDirectoryName(outFile) + "\\report.txt");
                if (!reader.EndOfStream)
                {
                    error  += reader.ReadToEnd();
                    isValid = false;
                }
                reader.Close();

                if (File.Exists(Path.GetDirectoryName(outFile) + "\\report.txt"))
                {
                    File.Delete(Path.GetDirectoryName(outFile) + "\\report.txt");
                }

                // Check whether the document is valid or invalid.
                if (isValid == false)
                {
                    if (error_MasterSub != "")
                    {
                        error_Exception = "Translation failed." + "\n" + "Validation error found while translating the following documents" + "\n" + " \"" + error_MasterSub + "\n" + error;
                    }
                    else
                    {
                        error_Exception = "Translated document is invalid." + "\n\n" + error;
                    }
                }
                else
                {
                    if (error_MasterSub != "")
                    {
                        error_Exception = "Translation failed." + "\n\n" + "Validation error found while translating the following documents" + "\n" + " \"" + error_MasterSub + "\n" + error;
                    }
                }
            } catch (UnauthorizedAccessException a) {
                xsd.Close();
                //dont have access permission
                String error = a.Message;
                report.AddLog("", "Validation Error of translated DAISY File: \n" + error, Report.ERROR_LEVEL);
            } catch (Exception a) {
                xsd.Close();
                //and other things that could go wrong
                String error = a.Message;
                report.AddLog("", "Validation Error of translated DAISY File: \n" + error, Report.ERROR_LEVEL);
            }
        }