Validate XML with inline Schema
<%@ Page Language="C#"%> <%@ Import Namespace="System.Xml" %> <%@ Import Namespace="System.Xml.Schema" %> <script runat="server"> private StringBuilder stringBuilder = new StringBuilder(); void Page_Load(object sender, EventArgs e) { string xmlPath = MapPath("AuthorsWithInlineSchema.xml"); XmlReader reader = null; XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.Schema; settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler); //settings.ValidationFlags &= ~XmlSchemaValidationFlags.IgnoreInlineSchema; //settings.ValidationFlags &= ~XmlSchemaValidationFlags.IgnoreValidationWarnings; settings.ValidationFlags &= XmlSchemaValidationFlags.ProcessInlineSchema; settings.ValidationFlags &= XmlSchemaValidationFlags.ReportValidationWarnings; reader = XmlReader.Create(xmlPath, settings); while (reader.Read()) { } if (stringBuilder.ToString() == String.Empty) Response.Write("Validation completed successfully."); else Response.Write("Validation Failed. <br>" + stringBuilder.ToString()); } void ValidationEventHandler(object sender, ValidationEventArgs args) { if (args.Severity == XmlSeverityType.Error) { stringBuilder.Append("Validation error: " + args.Message + "<br>"); } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Inline XSD Schema Validation</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html> <%-- <?xml version="1.0"?> <root xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:x="urn:authors"> <!-- Start of Schema --> <xs:schema targetNamespace="urn:authors"> <xs:element name="authors"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="author"> <xs:complexType> <xs:sequence> <xs:element name="authorID" type="xs:string" /> <xs:element name="lastName" type="xs:string" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="phone" type="xs:string" /> <xs:element name="address" type="xs:string" /> <xs:element name="city" type="xs:string" /> <xs:element name="state" type="xs:string" /> <xs:element name="zip" type="xs:unsignedInt" /> <xs:element name="contract" type="xs:boolean" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> <!-- End of Schema --> <x:authors> <author> <authorID>000-00-0001</authorID> <lastName>Nancy</lastName> <firstName>Lee</firstName> <phone>999 999-9999</phone> <address>9999 York St.</address> <city>Regina</city> <state>LA</state> <zip>99999</zip> <contract>true</contract> </author> <author> <authorID>000-00-0002</authorID> <lastName>First</lastName> <firstName>Last</firstName> <phone>415 986-7020</phone> <address>No Name St.</address> <city>Vancouver</city> <state>BC</state> <zip>88888</zip> <contract>true</contract> </author> </x:authors> </root> --%>
1. | Read XML Schema and compile | ||
2. | Create XML Schema |