Mega Code Archive

 
Categories / ASP.Net / XML
 

Validate XML against XML 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("Authors.xml");             string xsdPath = MapPath("Authors.xsd");         XmlReader reader = null;                 XmlReaderSettings settings = new XmlReaderSettings();         settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler);         settings.ValidationType = ValidationType.Schema;                 settings.Schemas.Add(null, XmlReader.Create(xsdPath));         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)     {                 stringBuilder.Append("Validation error: " + args.Message + "<br>");                     }        </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">     <title>XSD Validation</title> </head> <body>     <form id="form1" runat="server">     <div>                     </div>     </form> </body> </html> <%-- File: Authors.xml <?xml version="1.0"?> <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>  </authors> --%> <%-- File: Authors.xsd <?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">   <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> --%>