3 using System.Reflection;
5 using System.Xml.Schema;
7 namespace Mono.Documentation
11 static XmlValidatingReader reader;
12 static XmlSchema schema;
13 static long errors = 0;
14 static bool IsValid = true;
16 public static void Main (string[] args)
18 if (args.Length < 2) {
26 s = Assembly.GetExecutingAssembly ().GetManifestResourceStream ("monodoc-ecma.xsd");
29 Console.WriteLine ("Unknown provider: {0}", args[0]);
35 Console.WriteLine ("ERROR: schema for {0} was not found", args[0]);
39 schema = XmlSchema.Read (s, null);
40 schema.Compile (null);
42 // skip args[0] because it is the provider name
43 for (int i = 1; i < args.Length; i++) {
45 if (IsMonodocFile (arg))
48 if (Directory.Exists (arg))
50 RecurseDirectory (arg);
54 Console.WriteLine ("Total validation errors: {0}", errors);
57 static void PrintUsage ()
59 Console.WriteLine ("usage: normalize.exe <provider> <files>");
63 static void ValidateFile (string file)
67 reader = new XmlValidatingReader (new XmlTextReader (file));
68 reader.ValidationType = ValidationType.Schema;
69 reader.Schemas.Add (schema);
70 reader.ValidationEventHandler += new ValidationEventHandler (OnValidationEvent);
71 while (reader.Read ()) {
77 Console.WriteLine ("mdvalidator: error: " + e.ToString ());
81 static void RecurseDirectory (string dir)
83 string[] files = Directory.GetFiles (dir, "*.xml");
84 foreach (string f in files)
86 if (IsMonodocFile (f))
90 string[] dirs = Directory.GetDirectories (dir);
91 foreach (string d in dirs)
95 static void OnValidationEvent (object sender, ValidationEventArgs a)
100 Console.WriteLine (a.Message);
103 static bool IsMonodocFile (string file)
105 if (File.Exists (file) && Path.GetExtension (file).ToLower () == ".xml")