ASP.Net/XML/XmlSchemaSet
XSD Validation using XmlSchemaSet
<source lang="csharp">
<%@ 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"); XmlSchemaSet schemaSet = new XmlSchemaSet(); schemaSet.Add(null, xsdPath); XmlReader reader = null; XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler); settings.ValidationType = ValidationType.Schema; settings.Schemas = schemaSet; reader = XmlReader.Create(xmlPath, settings); while (reader.Read()) { } if (stringBuilder.ToString() == String.Empty) Response.Write("Validation completed successfully."); else Response.Write("Validation Failed.
" + stringBuilder.ToString()); } void ValidationEventHandler(object sender, ValidationEventArgs args) { stringBuilder.Append("Validation error: " + args.Message + "
"); }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>XSD Validation using XmlSchemaSet</title>
</head> <body>
<form id="form1" runat="server">
</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> --%>
</source>