| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653 |
- //
- // MonoTests.System.Xml.XsdValidatingReaderTests.cs
- //
- // Author:
- // Atsushi Enomoto <[email protected]>
- //
- // (C)2003 Atsushi Enomoto
- // (C)2005-2007 Novell, Inc.
- //
- using System;
- using System.IO;
- using System.Net;
- using System.Xml;
- using System.Xml.Schema;
- using NUnit.Framework;
- namespace MonoTests.System.Xml
- {
- [TestFixture]
- public class XsdValidatingReaderTests
- {
- public XsdValidatingReaderTests ()
- {
- }
- XmlReader xtr;
- XmlValidatingReader xvr;
- private XmlValidatingReader PrepareXmlReader (string xml)
- {
- XmlReader reader = new XmlTextReader (xml, XmlNodeType.Document, null);
- // XmlDocument doc = new XmlDocument ();
- // doc.LoadXml (xml);
- // XmlReader reader = new XmlNodeReader (doc);
- return new XmlValidatingReader (reader);
- }
- [Test]
- public void TestEmptySchema ()
- {
- string xml = "<root/>";
- xvr = PrepareXmlReader (xml);
- xvr.ValidationType = ValidationType.Schema;
- xvr.Read (); // Is is missing schema component.
- }
- [Test]
- public void TestSimpleValidation ()
- {
- string xml = "<root/>";
- xvr = PrepareXmlReader (xml);
- Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
- XmlSchema schema = new XmlSchema ();
- XmlSchemaElement elem = new XmlSchemaElement ();
- elem.Name = "root";
- schema.Items.Add (elem);
- xvr.Schemas.Add (schema);
- xvr.Read (); // root
- Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
- xvr.Read (); // EOF
- xml = "<hoge/>";
- xvr = PrepareXmlReader (xml);
- xvr.Schemas.Add (schema);
- try {
- xvr.Read ();
- Assert.Fail ("element mismatch is incorrectly allowed");
- } catch (XmlSchemaException) {
- }
- xml = "<hoge xmlns='urn:foo' />";
- xvr = PrepareXmlReader (xml);
- xvr.Schemas.Add (schema);
- try {
- xvr.Read ();
- Assert.Fail ("Element in different namespace is incorrectly allowed.");
- } catch (XmlSchemaException) {
- }
- }
- [Test]
- public void TestReadTypedValueSimple ()
- {
- string xml = "<root>12</root>";
- XmlSchema schema = new XmlSchema ();
- XmlSchemaElement elem = new XmlSchemaElement ();
- elem.Name = "root";
- elem.SchemaTypeName = new XmlQualifiedName ("integer", XmlSchema.Namespace);
- schema.Items.Add (elem);
- // Lap 1:
-
- xvr = PrepareXmlReader (xml);
- xvr.Schemas.Add (schema);
- // Read directly from root.
- object o = xvr.ReadTypedValue ();
- Assert.AreEqual (ReadState.Initial, xvr.ReadState);
- Assert.IsNull (o);
- xvr.Read (); // element root
- Assert.AreEqual (XmlNodeType.Element, xvr.NodeType);
- Assert.IsNotNull (xvr.SchemaType);
- Assert.IsTrue (xvr.SchemaType is XmlSchemaDatatype);
- o = xvr.ReadTypedValue (); // read "12"
- Assert.AreEqual (XmlNodeType.EndElement, xvr.NodeType);
- Assert.IsNotNull (o);
- Assert.AreEqual (typeof (decimal), o.GetType ());
- decimal n = (decimal) o;
- Assert.AreEqual (12, n);
- Assert.IsTrue (!xvr.EOF);
- Assert.AreEqual ("root", xvr.Name);
- Assert.IsNull (xvr.SchemaType); // EndElement's type
- // Lap 2:
- xvr = PrepareXmlReader (xml);
- xvr.Schemas.Add (schema);
- xvr.Read (); // root
- XmlSchemaDatatype dt = xvr.SchemaType as XmlSchemaDatatype;
- Assert.IsNotNull (dt);
- Assert.AreEqual (typeof (decimal), dt.ValueType);
- Assert.AreEqual (XmlTokenizedType.None, dt.TokenizedType);
- xvr.Read (); // text "12"
- Assert.IsNull (xvr.SchemaType);
- o = xvr.ReadTypedValue ();
- // ReadTypedValue is different from ReadString().
- Assert.IsNull (o);
- }
- [Test]
- [Ignore ("XML Schema validator should not be available for validating non namespace-aware XmlReader that handled colon as a name character")]
- public void TestNamespacesFalse ()
- {
- // This tests if Namespaces=false is specified, then
- // the reader's NamespaceURI should be always string.Empty and
- // validation should be done against such schema that has target ns as "".
- string xml = "<x:root xmlns:x='urn:foo' />";
- xvr = PrepareXmlReader (xml);
- xvr.Namespaces = false;
- Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
- XmlSchema schema = new XmlSchema ();
- schema.TargetNamespace = "urn:foo";
- XmlSchemaElement elem = new XmlSchemaElement ();
- elem.Name = "root";
- schema.Items.Add (elem);
- xvr.Schemas.Add (schema);
- xvr.Read (); // root
- Assert.IsTrue (!xvr.Namespaces);
- Assert.AreEqual ("x:root", xvr.Name);
- // LocalName may contain colons.
- Assert.AreEqual ("x:root", xvr.LocalName);
- // NamespaceURI is not supplied.
- Assert.AreEqual ("", xvr.NamespaceURI);
- }
- [Test]
- public void TestReadTypedAttributeValue ()
- {
- string xml = "<root attr='12'></root>";
- XmlSchema schema = new XmlSchema ();
- XmlSchemaElement elem = new XmlSchemaElement ();
- elem.Name = "root";
- XmlSchemaComplexType ct = new XmlSchemaComplexType ();
- XmlSchemaAttribute attr = new XmlSchemaAttribute ();
- attr.Name = "attr";
- attr.SchemaTypeName = new XmlQualifiedName ("int", XmlSchema.Namespace);
- ct.Attributes.Add (attr);
- elem.SchemaType = ct;
- schema.Items.Add (elem);
- xvr = PrepareXmlReader (xml);
- xvr.Schemas.Add (schema);
- xvr.Read ();
- Assert.AreEqual ("root", xvr.Name);
- Assert.IsTrue (xvr.MoveToNextAttribute ()); // attr
- Assert.AreEqual ("attr", xvr.Name);
- XmlSchemaDatatype dt = xvr.SchemaType as XmlSchemaDatatype;
- Assert.IsNotNull (dt);
- Assert.AreEqual (typeof (int), dt.ValueType);
- Assert.AreEqual (XmlTokenizedType.None, dt.TokenizedType);
- object o = xvr.ReadTypedValue ();
- Assert.AreEqual (XmlNodeType.Attribute, xvr.NodeType);
- Assert.AreEqual (typeof (int), o.GetType ());
- int n = (int) o;
- Assert.AreEqual (12, n);
- Assert.IsTrue (xvr.ReadAttributeValue ()); // can read = seems not proceed.
- }
- [Test]
- public void DuplicateSchemaAssignment ()
- {
- string xml = @"<data
- xmlns='http://www.test.com/schemas/'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xsi:schemaLocation='http://www.test.com/schemas/ /home/user/schema.xsd' />";
- string xsd = @"<xs:schema
- targetNamespace='http://www.test.com/schemas/'
- xmlns:xs='http://www.w3.org/2001/XMLSchema'
- xmlns='http://www.test.com/schemas/' >
- <xs:element name='data' /></xs:schema>";
- string xmlns = "http://www.test.com/schemas/";
- XmlValidatingReader xvr = new XmlValidatingReader (
- xml, XmlNodeType.Document, null);
- XmlSchemaCollection schemas = new XmlSchemaCollection ();
- schemas.Add (XmlSchema.Read (new XmlTextReader (
- xsd, XmlNodeType.Document, null), null));
- xvr.Schemas.Add (schemas);
- while (!xvr.EOF)
- xvr.Read ();
- }
- [Test] // bug #76234
- public void DTDValidatorNamespaceHandling ()
- {
- string xml = "<xml xmlns='urn:a'> <foo> <a:bar xmlns='urn:b' xmlns:a='urn:a' /> <bug /> </foo> </xml>";
- XmlValidatingReader vr = new XmlValidatingReader (
- xml, XmlNodeType.Document, null);
- vr.Read ();
- vr.Read (); // whitespace
- Assert.AreEqual (String.Empty, vr.NamespaceURI, "#1");
- vr.Read (); // foo
- Assert.AreEqual ("urn:a", vr.NamespaceURI, "#2");
- vr.Read (); // whitespace
- vr.Read (); // a:bar
- Assert.AreEqual ("urn:a", vr.NamespaceURI, "#3");
- vr.Read (); // whitespace
- vr.Read (); // bug
- Assert.AreEqual ("urn:a", vr.NamespaceURI, "#4");
- }
- [Test]
- public void MultipleSchemaInSchemaLocation ()
- {
- XmlTextReader xtr = new XmlTextReader ("Test/XmlFiles/xsd/multi-schemaLocation.xml");
- XmlValidatingReader vr = new XmlValidatingReader (xtr);
- while (!vr.EOF)
- vr.Read ();
- }
- [Test]
- public void ReadTypedValueSimpleTypeRestriction ()
- {
- string xml = "<root>xx</root><!-- after -->";
- string xsd = @"
- <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
- <xs:element name='root'>
- <xs:simpleType>
- <xs:restriction base='xs:string'>
- <xs:minLength value='2' />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- </xs:schema>";
- XmlTextReader xir =
- new XmlTextReader (xml, XmlNodeType.Document, null);
- XmlTextReader xsr =
- new XmlTextReader (xsd, XmlNodeType.Document, null);
- XmlValidatingReader vr = new XmlValidatingReader (xir);
- vr.Schemas.Add (XmlSchema.Read (xsr, null));
- vr.Read (); // root
- Assert.AreEqual ("xx", vr.ReadTypedValue ());
- Assert.AreEqual (XmlNodeType.EndElement, vr.NodeType);
- }
- // If we normalize string before validating with facets,
- // this test will fail. It will also fail if ReadTypedValue()
- // ignores whitespace nodes.
- [Test]
- public void ReadTypedValueWhitespaces ()
- {
- string xml = "<root> </root><!-- after -->";
- string xsd = @"
- <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
- <xs:element name='root'>
- <xs:simpleType>
- <xs:restriction base='xs:string'>
- <xs:minLength value='2' />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- </xs:schema>";
- XmlTextReader xir =
- new XmlTextReader (xml, XmlNodeType.Document, null);
- XmlTextReader xsr =
- new XmlTextReader (xsd, XmlNodeType.Document, null);
- XmlValidatingReader vr = new XmlValidatingReader (xir);
- vr.Schemas.Add (XmlSchema.Read (xsr, null));
- vr.Read (); // root
- Assert.AreEqual (" ", vr.ReadTypedValue ());
- Assert.AreEqual (XmlNodeType.EndElement, vr.NodeType);
- }
- [Test] // bug #77241
- public void EmptyContentAllowWhitespace ()
- {
- string doc = @"
- <root>
- <!-- some comment -->
- <child/>
- </root>
- ";
- string schema = @"
- <xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
- <xsd:element name=""root"">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name=""child"" type=""xsd:string"" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- ";
- XmlValidatingReader reader = new XmlValidatingReader (
- new XmlTextReader (new StringReader (doc)));
- reader.Schemas.Add (null,
- new XmlTextReader (new StringReader (schema)));
- while (reader.Read ())
- ;
- }
- [Test] // bug #79650
- #if NET_2_0
- // annoyance
- [ExpectedException (typeof (XmlSchemaValidationException))]
- #else
- [ExpectedException (typeof (XmlSchemaException))]
- #endif
- public void EnumerationFacetOnAttribute ()
- {
- string xml = "<test mode='NOT A ENUMERATION VALUE' />";
- XmlSchema schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/xsd/79650.xsd"), null);
- XmlValidatingReader xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
- xvr.ValidationType = ValidationType.Schema;
- xvr.Schemas.Add (schema);
- while (!xvr.EOF)
- xvr.Read ();
- }
- class XmlErrorResolver : XmlResolver
- {
- public override ICredentials Credentials {
- set { }
- }
- public override object GetEntity (Uri uri, string role, Type type)
- {
- throw new Exception ();
- }
- }
- [Test] // bug #79924
- public void ValidationTypeNoneIgnoreSchemaLocations ()
- {
- string xml = "<project xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='nosuchschema.xsd'/>";
- XmlValidatingReader vr = new XmlValidatingReader (
- new XmlTextReader (new StringReader (xml)));
- vr.ValidationType = ValidationType.None;
- vr.XmlResolver = new XmlErrorResolver ();
- while (!vr.EOF)
- vr.Read ();
- }
- [Test] // bug #336625
- public void ValidationTypeNoneIgnoreLocatedSchemaErrors ()
- {
- string xml = "<test xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='Test/XmlFiles/xsd/336625.xsd'/>";
- XmlValidatingReader vr = new XmlValidatingReader (
- new XmlTextReader (new StringReader (xml)));
- vr.ValidationType = ValidationType.None;
- while (!vr.EOF)
- vr.Read ();
- }
- [Test]
- public void Bug81360 ()
- {
- string schemaFile = "Test/XmlFiles/xsd/81360.xsd";
- XmlTextReader treader = new XmlTextReader (schemaFile);
- XmlSchema sc = XmlSchema.Read (treader, null);
- sc.Compile (null);
- string xml = @"<body xmlns='" + sc.TargetNamespace + "'><div></div></body>";
- XmlTextReader reader = new XmlTextReader (new StringReader (xml));
- XmlValidatingReader validator = new XmlValidatingReader (reader);
- validator.Schemas.Add (sc);
- validator.ValidationType = ValidationType.Schema;
- while (!validator.EOF)
- validator.Read ();
- }
- #if NET_2_0
- [Test]
- public void Bug81460 ()
- {
- string xsd = "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'><xs:element name='foo'><xs:complexType><xs:attribute name='a' default='x' /></xs:complexType></xs:element></xs:schema>";
- string xml = "<foo/>";
- XmlReaderSettings s = new XmlReaderSettings ();
- s.ValidationType = ValidationType.Schema;
- s.Schemas.Add (XmlSchema.Read (new StringReader (xsd), null));
- XmlReader r = XmlReader.Create (new StringReader (xml), s);
- r.Read ();
- r.MoveToFirstAttribute (); // default attribute
- Assert.AreEqual (String.Empty, r.Prefix);
- }
- #endif
- [Test]
- #if NET_2_0
- // annoyance
- [ExpectedException (typeof (XmlSchemaValidationException))]
- #else
- [ExpectedException (typeof (XmlSchemaException))]
- #endif
- public void Bug82099 ()
- {
- string xsd = @"
- <xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
- <xsd:element name='Customer' type='CustomerType' />
- <xsd:complexType name='CustomerType'>
- <xsd:attribute name='name' type='xsd:string' />
- </xsd:complexType>
- </xsd:schema>";
- XmlSchema schema = XmlSchema.Read (new StringReader (xsd), null);
- string xml = "<Customer name='Bob'> </Customer>";
- #if NET_2_0
- XmlReaderSettings settings = new XmlReaderSettings ();
- settings.Schemas.Add (schema);
- settings.ValidationType = ValidationType.Schema;
- XmlReader reader = XmlReader.Create (new StringReader (xml), settings);
-
- #else
- XmlValidatingReader reader = new XmlValidatingReader (xml, XmlNodeType.Document, null);
- reader.Schemas.Add (schema);
- reader.ValidationType = ValidationType.Schema;
- #endif
- reader.Read ();
- reader.Read ();
- reader.Read ();
- }
- [Test]
- public void Bug82010 ()
- {
- string xmlfile = "Test/XmlFiles/xsd/82010.xml";
- string xsdfile = "Test/XmlFiles/xsd/82010.xsd";
- XmlTextReader xr = null, xr2 = null;
- try {
- xr = new XmlTextReader (xsdfile);
- xr2 = new XmlTextReader (xmlfile);
- XmlValidatingReader xvr = new XmlValidatingReader (xr2);
- xvr.Schemas.Add (XmlSchema.Read (xr, null));
- while (!xvr.EOF)
- xvr.Read ();
- } finally {
- if (xr2 != null)
- xr2.Close ();
- if (xr != null)
- xr.Close ();
- }
- }
- [Test]
- public void Bug376395 ()
- {
- string xmlfile = "Test/XmlFiles/xsd/376395.xml";
- string xsdfile = "Test/XmlFiles/xsd/376395.xsd";
- XmlTextReader xr = null, xr2 = null;
- try {
- xr = new XmlTextReader (xsdfile);
- xr2 = new XmlTextReader (xmlfile);
- XmlValidatingReader xvr = new XmlValidatingReader (xr2);
- xvr.Schemas.Add (XmlSchema.Read (xr, null));
- while (!xvr.EOF)
- xvr.Read ();
- } finally {
- if (xr2 != null)
- xr2.Close ();
- if (xr != null)
- xr.Close ();
- }
- }
- [Test]
- public void ValidateMixedInsideXsdAny ()
- {
- string xml = @"<root xmlns='urn:foo'>
- <X><Z>text</Z></X>
- <Y><X><Z>text</Z></X></Y>
- </root>";
- string xsd = @"
- <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
- targetNamespace='urn:foo' xmlns='urn:foo'>
- <xs:complexType name='root-type'>
- <xs:sequence><xs:element ref='X' /><xs:element ref='Y' /></xs:sequence>
- </xs:complexType>
- <xs:complexType name='X-type'>
- <xs:choice minOccurs='1' maxOccurs='unbounded'>
- <xs:any processContents='skip'/>
- </xs:choice>
- </xs:complexType>
- <xs:complexType name='Y-type'>
- <xs:sequence><xs:element ref='X' /></xs:sequence>
- </xs:complexType>
- <xs:element name='root' type='root-type' />
- <xs:element name='X' type='X-type' />
- <xs:element name='Y' type='Y-type' />
- </xs:schema>";
- XmlTextReader xtr = new XmlTextReader (new StringReader (xml));
- XmlValidatingReader xvr = new XmlValidatingReader (xtr);
- XmlReader xsr = new XmlTextReader (new StringReader (xsd));
- xvr.Schemas.Add (XmlSchema.Read (xsr, null));
- while (!xvr.EOF)
- xvr.Read ();
- #if NET_2_0
- xtr = new XmlTextReader (new StringReader (xml));
- xsr = new XmlTextReader (new StringReader (xsd));
- var s = new XmlReaderSettings ();
- s.Schemas.Add (XmlSchema.Read (xsr, null));
- s.ValidationType = ValidationType.Schema;
- XmlReader xvr2 = XmlReader.Create (xtr, s);
- while (!xvr2.EOF)
- xvr2.Read ();
- #endif
- }
- #if NET_2_0
- [Test]
- public void WhitespaceAndElementOnly ()
- {
- string xsd = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
- <xs:element name='element_list'>
- <xs:complexType>
- <xs:sequence>
- <xs:element name='element' maxOccurs='unbounded' />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:schema>";
- string xml = @"<element_list>
- <!-- blah blah blah -->
- <element />
- <!-- blah blah -->
- <element />
- </element_list>";
- RunValidation (xml, xsd);
- }
- [Test]
- [ExpectedException (typeof (XmlSchemaValidationException))]
- public void EnumerationFacet ()
- {
- // bug #339934
- string xsd = @"<xs:schema id='schema' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
- <xs:simpleType name='ModeType'>
- <xs:restriction base='xs:string'>
- <xs:enumeration value='on' />
- <xs:enumeration value='off' />
- </xs:restriction>
- </xs:simpleType>
- <xs:element name='test'>
- <xs:complexType>
- <xs:sequence/>
- <xs:attribute name='mode' type='ModeType' use='required' />
- </xs:complexType>
- </xs:element>
- </xs:schema>";
- string xml = @"<test mode='out of scope'></test>";
- RunValidation (xml, xsd);
- }
-
- [Test]
- public void Bug501763 ()
- {
- string xsd1 = @"
- <xs:schema id='foo1'
- targetNamespace='foo1'
- elementFormDefault='qualified'
- xmlns='foo1'
- xmlns:xs='http://www.w3.org/2001/XMLSchema'
- xmlns:f2='foo2'>
- <xs:import namespace='foo2' />
- <xs:element name='Foo1Element' type='f2:Foo2ExtendedType'/>
- </xs:schema>";
- string xsd2 = @"
- <xs:schema id='foo2'
- targetNamespace='foo2'
- elementFormDefault='qualified'
- xmlns='foo2'
- xmlns:xs='http://www.w3.org/2001/XMLSchema' >
- <xs:element name='Foo2Element' type='Foo2Type' />
-
- <xs:complexType name='Foo2Type'>
- <xs:attribute name='foo2Attr' type='xs:string' use='required'/>
- </xs:complexType>
-
- <xs:complexType name='Foo2ExtendedType'>
- <xs:complexContent>
- <xs:extension base='Foo2Type'>
- <xs:attribute name='foo2ExtAttr' type='xs:string' use='required'/>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:schema>";
-
- XmlDocument doc = new XmlDocument ();
-
- XmlSchema schema1 = XmlSchema.Read (XmlReader.Create (new StringReader (xsd1)), null);
- XmlSchema schema2 = XmlSchema.Read (XmlReader.Create (new StringReader (xsd2)), null);
-
- doc.LoadXml (@"
- <Foo2Element
- foo2Attr='dummyvalue1'
- xmlns='foo2'
- />");
- doc.Schemas.Add (schema2);
- doc.Validate (null);
-
- doc = new XmlDocument();
- doc.LoadXml(@"
- <Foo1Element
- foo2Attr='dummyvalue1'
- foo2ExtAttr='dummyvalue2'
- xmlns='foo1'
- />");
- doc.Schemas.Add (schema2);
- doc.Schemas.Add (schema1);
- doc.Validate (null);
- }
-
- void RunValidation (string xml, string xsd)
- {
- XmlReaderSettings s = new XmlReaderSettings ();
- s.ValidationType = ValidationType.Schema;
- s.Schemas.Add (XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null));
- XmlReader r = XmlReader.Create (new StringReader (xml), s);
- while (!r.EOF)
- r.Read ();
- }
- #endif
- }
- }
|