2 // RelaxngDatatypeProviderTest.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
11 using Commons.Xml.Relaxng;
12 using Commons.Xml.Relaxng.XmlSchema;
13 using NUnit.Framework;
15 namespace MonoTests.Commons.Xml.Relaxng
18 public class RelaxngDatatypeProviderTests
21 public void CustomTypeProvider ()
23 var datatypeLibrary = SetupMyDataProvider ();
24 XmlDocument xml = new XmlDocument ();
25 xml.LoadXml ("<root> <v1>mytype</v1> <v2>1</v2> </root>");
26 XmlDocument schemaXml = ReadDoc ("Test/XmlFiles/463264.rng");
27 XmlReader reader = new RelaxngValidatingReader (new XmlNodeReader (xml), new XmlNodeReader (schemaXml), datatypeLibrary);
28 while (reader.Read ())
33 public void Bug463267 ()
35 var datatypeLibrary = SetupMyDataProvider ();
36 XmlDocument xml = new XmlDocument ();
37 xml.LoadXml ("<root> <v2>1</v2> <v1>mytype</v1> </root>");
38 XmlDocument schemaXml = ReadDoc ("Test/XmlFiles/463267.rng");
39 XmlReader reader = new RelaxngValidatingReader (new XmlNodeReader (xml), new XmlNodeReader (schemaXml), datatypeLibrary);
40 while (reader.Read ())
44 RelaxngDatatypeProvider SetupMyDataProvider ()
46 var datatypeLibrary = new RelaxngMergedProvider ();
48 datatypeLibrary [MyRngTypeProvider.Namespace] = new MyRngTypeProvider();
49 datatypeLibrary ["http://www.w3.org/2001/XMLSchema-datatypes"] = XsdDatatypeProvider.Instance;
50 datatypeLibrary [System.Xml.Schema.XmlSchema.Namespace] = XsdDatatypeProvider.Instance;
51 datatypeLibrary [String.Empty] = RelaxngMergedProvider.DefaultProvider [string.Empty];
52 return datatypeLibrary;
55 XmlDocument ReadDoc (string s)
57 var d = new XmlDocument ();
63 class MyRngTypeProvider : RelaxngDatatypeProvider
65 public static readonly string Namespace = "http://tempuri.org/mytypes";
67 public override RelaxngDatatype GetDatatype(string name, string ns, RelaxngParamList parameters)
78 class MyType : RelaxngDatatype
80 public override string Name {
81 get { return "mytype"; }
84 public override string NamespaceURI {
85 get { return MyRngTypeProvider.Namespace; }
88 public override object Parse (string text, System.Xml.XmlReader reader)
93 public override bool IsValid (string text, System.Xml.XmlReader reader)
95 return ((string) Parse (text, reader)) == "mytype";