X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Ftools%2Fmono-xmltool%2Fxmltool.cs;h=918e4a2d48d3cf4a113bfa63f40b3ee904f0dad7;hb=f60b8b5b22e614fac834acb48492923d7b0b8ffc;hp=27cc1fad61792c25057f82515fabb4aa0bbb24fd;hpb=75df74a96c33af7a99e16e4281272f1b67334a48;p=mono.git diff --git a/mcs/tools/mono-xmltool/xmltool.cs b/mcs/tools/mono-xmltool/xmltool.cs index 27cc1fad617..918e4a2d48d 100644 --- a/mcs/tools/mono-xmltool/xmltool.cs +++ b/mcs/tools/mono-xmltool/xmltool.cs @@ -20,7 +20,6 @@ namespace Commons.Xml.Relaxng { try { Run (args); - Console.Error.WriteLine ("done."); } catch (Exception ex) { if (Environment.GetEnvironmentVariable ("MONO_XMLTOOL_ERROR_DETAILS") == "yes") Console.Error.WriteLine (ex); @@ -41,6 +40,7 @@ options: --validate-rnc relax-ng-compact-grammar-file [instances] --validate-nvdl nvdl-script-xml [instances] --validate-xsd xml-schema [instances] + --validate-xsd2 xml-schema [instances] (in .NET 2.0 validator) --validate-dtd instances --transform stylesheet instance-xml [output-xml] --prettyprint [source] [result] @@ -77,6 +77,9 @@ environment variable that affects behavior: ValidateNvdl (args); return; #endif + case "--validate-xsd2": + ValidateXsd2 (args); + return; case "--validate-xsd": ValidateXsd (args); return; @@ -121,13 +124,15 @@ environment variable that affects behavior: static void ValidateRelaxngCompact (string [] args) { StreamReader sr = new StreamReader (args [1]); - RelaxngPattern p = RncParser.ParseRnc (sr); + RelaxngPattern p = RncParser.ParseRnc (sr, null, Path.GetFullPath (args [1])); sr.Close (); ValidateRelaxng (p, args); } static void ValidateRelaxng (RelaxngPattern p, string [] args) { + p.Compile (); + if (args.Length < 2) return; @@ -137,6 +142,16 @@ environment variable that affects behavior: new RelaxngValidatingReader (xtr, p); if (Environment.GetEnvironmentVariable ("MONO_XMLTOOL_ERROR_DETAILS") == "yes") vr.ReportDetails = true; + else + vr.InvalidNodeFound += delegate (XmlReader source, string message) { + IXmlLineInfo li = source as IXmlLineInfo; + Console.WriteLine ("ERROR: {0} (at {1} line {2} column {3})", + message, + source.BaseURI, + li != null && li.HasLineInfo () ? li.LineNumber : 0, + li != null && li.HasLineInfo () ? li.LinePosition : 0); + return true; + }; while (!vr.EOF) vr.Read (); @@ -163,6 +178,7 @@ environment variable that affects behavior: XmlTextReader schemaxml = new XmlTextReader (args [1]); XSchema xsd = XSchema.Read (schemaxml, null); schemaxml.Close (); + xsd.Compile (null); for (int i = 2; i < args.Length; i++) { XmlTextReader xtr = new XmlTextReader (args [i]); XmlValidatingReader xvr = new XmlValidatingReader (xtr); @@ -173,6 +189,19 @@ environment variable that affects behavior: } } + static void ValidateXsd2 (string [] args) + { + XmlReaderSettings s = new XmlReaderSettings (); + s.ValidationType = ValidationType.Schema; + s.Schemas.Add (null, args [1]); + for (int i = 2; i < args.Length; i++) { + XmlReader xr = XmlReader.Create (args [i], s); + while (!xr.EOF) + xr.Read (); + xr.Close (); + } + } + static void ValidateDtd (string [] args) { for (int i = 1; i < args.Length; i++) {