Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
XML belgesini XML Şema tanım dili (XSD) şemalarına göre doğrulamak için kullanabilirsiniz XmlSchemaCollection . , XmlSchemaCollection doğrulama her gerçekleştiğinde belleğe yüklenmemeleri için şemaları koleksiyonda depolayarak performansı artırır. Şema, şema koleksiyonunda varsa, schemaLocation
özniteliği koleksiyondaki şemayı aramak için kullanılır.
Önemli
Sınıf XmlSchemaCollection artık kullanımdan kaldırıldı ve sınıfıyla XmlSchemaSet değiştirildi. Sınıfı hakkında XmlSchemaSet daha fazla bilgi için bkz . Şema Derlemesi için XmlSchemaSet.
Aşağıdaki örnekte bir veri dosyasının kök öğesi gösterilmektedir.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:bookstore-schema"
elementFormDefault="qualified"
targetNamespace="urn:bookstore-schema">
Bu örnekte özniteliğinin targetNamespace
değeri, urn:bookstore-schema
şemasını öğesine eklerken kullanılan ad alanıyla XmlSchemaCollectionaynıdır.
Aşağıdaki kod örneği öğesine XmlSchemaCollectionbir XML Şeması ekler.
Dim xsc As New XmlSchemaCollection()
' XML Schema.
xsc.Add("urn:bookstore-schema", schema)
reader = New XmlTextReader(filename)
vreader = New XmlValidatingReader(reader)
vreader.Schemas.Add(xsc)
XmlSchemaCollection xsc = new XmlSchemaCollection();
// XML Schema.
xsc.Add("urn:bookstore-schema", schema);
reader = new XmlTextReader (filename);
vreader = new XmlValidatingReader (reader);
vreader.Schemas.Add(xsc);
targetNamespace
özniteliği genellikle için yöntemine namespaceURI
AddXmlSchemaCollectionözelliğini eklediğinizde kullanılır. şemasını XmlSchemaCollectionöğesine eklemeden önce null başvuru belirtebilirsiniz. Ad alanı olmayan şemalar için boş bir dize ("") kullanılmalıdır. XmlSchemaCollection ad alanı olmayan tek bir şemaya sahip olabilir.
Aşağıdaki kod örneği, öğesine HeadCount.xsd XmlSchemaCollection xml şeması ekler ve HeadCount.xml doğrular.
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Namespace ValidationSample
Class Sample
Public Shared Sub Main()
Dim tr As New XmlTextReader("HeadCount.xml")
Dim vr As New XmlValidatingReader(tr)
vr.Schemas.Add("xsdHeadCount", "HeadCount.xsd")
vr.ValidationType = ValidationType.Schema
AddHandler vr.ValidationEventHandler, AddressOf ValidationHandler
While vr.Read()
End While
Console.WriteLine("Validation finished")
End Sub
' Main
Public Shared Sub ValidationHandler(sender As Object, args As ValidationEventArgs)
Console.WriteLine("***Validation error")
Console.WriteLine("Severity:{0}", args.Severity)
Console.WriteLine("Message:{0}", args.Message)
End Sub
' ValidationHandler
End Class
' Sample
End Namespace
' ValidationSample
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
namespace ValidationSample
{
class Sample
{
public static void Main()
{
XmlTextReader tr = new XmlTextReader("HeadCount.xml");
XmlValidatingReader vr = new XmlValidatingReader(tr);
vr.Schemas.Add("xsdHeadCount", "HeadCount.xsd");
vr.ValidationType = ValidationType.Schema;
vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);
while(vr.Read());
Console.WriteLine("Validation finished");
}
public static void ValidationHandler(object sender, ValidationEventArgs args)
{
Console.WriteLine("***Validation error");
Console.WriteLine("\tSeverity:{0}", args.Severity);
Console.WriteLine("\tMessage :{0}", args.Message);
}
}
}
Aşağıda, doğrulanacak HeadCount.xml giriş dosyasının içeriği özetlenmiştir.
<!--Load HeadCount.xsd in SchemaCollection for Validation-->
<hc:HeadCount xmlns:hc='xsdHeadCount'>
<Name>Waldo Pepper</Name>
<Name>Red Pepper</Name>
</hc:HeadCount>
Aşağıda, doğrulanacak HEADCount.xsd XML Şeması dosyasının içeriği özetlenmiştir.
<xs:schema xmlns="xsdHeadCount" targetNamespace="xsdHeadCount" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name='HeadCount' type="HEADCOUNT"/>
<xs:complexType name="HEADCOUNT">
<xs:sequence>
<xs:element name='Name' type='xs:string' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='division' type='xs:int' use='optional' default='8'/>
</xs:complexType>
</xs:schema>
Aşağıdaki kod örneği, bir XmlValidatingReader alan XmlTextReaderoluşturur. sample4.xml giriş dosyası, sample4.xsd XML Şemasına göre doğrulanır.
Dim tr As New XmlTextReader("sample4.xml")
Dim vr As New XmlValidatingReader(tr)
vr.ValidationType = ValidationType.Schema
vr.Schemas.Add("datatypesTest", "sample4.xsd")
AddHandler vr.ValidationEventHandler, AddressOf ValidationCallBack
While vr.Read()
Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name)
End While
XmlTextReader tr = new XmlTextReader("sample4.xml");
XmlValidatingReader vr = new XmlValidatingReader(tr);
vr.ValidationType = ValidationType.Schema;
vr.Schemas.Add("datatypesTest", "sample4.xsd");
vr.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
while(vr.Read()) {
Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name);
}
Aşağıda, doğrulanacak sample4.xml giriş dosyasının içeriği özetlenmiştir.
<datatypes xmlns="datatypesTest">
<number>
<number_1>123</number_1>
</number>
</datatypes>
Aşağıda, doğrulanacak XML Şema dosyasının (sample4.xsd) içeriği özetlenmiştir.
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="datatypesTest"
targetNamespace="datatypesTest"
elementFormDefault="qualified">
<xs:element name = "datatypes">
<xs:complexType>
<xs:all>
<xs:element name="number">
<xs:complexType>
<xs:sequence>
<xs:element name="number_1" type="xs:decimal" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>