Merge branch 'master' into mono4-continuations_fix
[mono.git] / mcs / tools / mono-xsd / NewMonoXSD.cs
index b0c983b5438c68847307e86eb5fe7e00c428dfef..48caa8d225c1b696ae3002778c7f106be5500f71 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
@@ -255,11 +259,7 @@ namespace Mono.Util {
                                } else {\r
                                        typename = param.Substring (0, comma);\r
                                        string asmName = param.Substring (comma + 1);\r
-#if NET_1_1\r
                                        Assembly asm = Assembly.LoadFile (asmName);\r
-#else\r
-                                       Assembly asm = Assembly.LoadFrom (asmName);\r
-#endif\r
                                        if (asm == null)\r
                                                Error (generatorAssemblyNotFound, asmName);\r
                                        generatorType = asm.GetType (typename);\r
@@ -377,7 +377,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 +402,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 +475,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