1 <%@ Page Language="C#" %>
2 <%@ Import Namespace="System.Xml" %>
3 <%@ Import Namespace="System.Xml.Schema" %>
4
5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
6
7 <script runat="server">
8 private bool _processOK = true;
9 protected override void OnLoad( EventArgs e )
10 {
11 base.OnLoad( e );
12
13 XmlTextReader schemaReader = new XmlTextReader( this.MapPath( "Alunos.xsd" ) );
14 XmlSchema schema = XmlSchema.Read( schemaReader, null );
15 schema.Compile( null );
16
17 XmlReaderSettings setts = new XmlReaderSettings();
18 setts.ValidationType = ValidationType.Schema;
19 setts.Schemas.Add( schema );
20 setts.ValidationEventHandler += new ValidationEventHandler( ProcessError );
21 XmlReader reader = XmlReader.Create( this.MapPath("Alunos.xml" ), setts );
22 XmlDocument doc = new XmlDocument( );
23 doc.Load( reader );
24
25 if(!_processOK)
26 {
27 tree.DataSourceID = "";
28 return;
29 }
30
31 source.Data = doc.InnerXml;
32
33 }
34
35 protected void ProcessError( object sender, ValidationEventArgs args )
36 {
37 info.Text = args.Exception.ToString( );
38 _processOK = false;
39 }
40 </script>
41
42 <html xmlns="http://www.w3.org/1999/xhtml" >
43 <head runat="server">
44 <title>Untitled Page</title>
45 </head>
46 <body>
47 <h3>XmlDataSource - validação dos dados</h3>
48 <form id="form1" runat="server">
49 <asp:TreeView runat="server" id="tree" DataSourceID="source">
50 <DataBindings>
51 <asp:TreeNodeBinding DataMember="Nome" TextField="#innertext" Depth="2" />
52 <asp:TreeNodeBinding DataMember="Morada" TextField="#innertext" Depth="2" />
53 </DataBindings>
54 </asp:TreeView>
55 <asp:XmlDataSource ID="source" runat="server" />
56 <p />
57 <asp:Label runat="server" ID="info" />
58 </form>
59 </body>
60 </html>