Support colors on 256-color terminals
[mono.git] / mcs / tools / mono-xsd / NewMonoXSD.cs
index b0c983b5438c68847307e86eb5fe7e00c428dfef..06879b37c3d37bc0a65127325c5f1990d9f5bff4 100644 (file)
@@ -210,6 +210,10 @@ namespace Mono.Util {
                                        Console.WriteLine (helpString);\r
                                        return;\r
                                }\r
+                               else if (option == "nologo")\r
+                               {\r
+                                       // ignore, since we do not output a logo anyway\r
+                               }\r
                                else\r
                                        Error (unknownOption, option);\r
                        }\r
@@ -377,7 +381,7 @@ namespace Mono.Util {
                        foreach (string fileName in schemaNames)\r
                        {\r
                                StreamReader sr = new StreamReader (fileName);\r
-                               schemas.Add (XmlSchema.Read (sr, null));\r
+                               schemas.Add (XmlSchema.Read (sr, new ValidationEventHandler (HandleValidationError)));\r
                                sr.Close ();\r
 \r
                                if (targetFile == "") targetFile = Path.GetFileNameWithoutExtension (fileName);\r
@@ -402,10 +406,10 @@ namespace Mono.Util {
                        else\r
                        {\r
                                foreach (XmlSchema schema in schemas) {\r
-                                       if (!schema.IsCompiled) schema.Compile (null);\r
-                                       foreach (XmlSchemaObject ob in schema.Items)\r
-                                               if (ob is XmlSchemaElement)\r
-                                                       qnames.Add (((XmlSchemaElement)ob).QualifiedName);\r
+                                       if (!schema.IsCompiled) schema.Compile (new ValidationEventHandler (HandleValidationError));\r
+                                       foreach (XmlSchemaElement el in schema.Elements.Values)\r
+                                               if (!qnames.Contains (el.QualifiedName))\r
+                                                       qnames.Add (el.QualifiedName);\r
                                }\r
                        }\r
 \r
@@ -475,6 +479,14 @@ namespace Mono.Util {
                        Console.WriteLine ("Written file " + genFile);\r
                }\r
 \r
+               void HandleValidationError (object o, ValidationEventArgs e)\r
+               {\r
+                       Console.WriteLine ("{0}: {1} {2}",\r
+                               e.Severity == XmlSeverityType.Error ? "Error" : "Warning",\r
+                               e.Message,\r
+                               e.Exception != null ? e.Exception.Message : null);\r
+               }\r
+\r
                public void Error (string msg)\r
                {\r
                        throw new ApplicationException (msg);\r