Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wird das zur Überprüfung verwendete XDR (XML-Data Reduced)-Schema in XmlSchemaCollection gespeichert, wird es dem Namespace-URI zugewiesen, der beim Hinzufügen des Schemas zur Auflistung angegeben wurde. Durch XmlValidatingReader wird der Namespace-URI im XML-Dokument dem Schema zugeordnet, das dem URI in der Auflistung entspricht.
Ein Beispiel: Wenn das Stammelement des XML-Dokuments <bookstore xmlns="urn:newbooks-schema"> ist und das Schema zu XmlSchemaCollection hinzugefügt wurde, verweist es auf denselben Namespace, nämlich
xsc.Add("urn:newbooks-schema", "newbooks.xdr")
Im folgenden Codebeispiel wird XmlValidatingReader erstellt, der XmlTextReader übernimmt und das XDR-Schema HeadCount.xdr zu XmlSchemaCollection hinzufügt.
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("xdrHeadCount", "HeadCount.xdr")
vr.ValidationType = ValidationType.XDR
AddHandler vr.ValidationEventHandler, AddressOf ValidationHandler
While vr.Read()
PrintTypeInfo(vr)
If vr.NodeType = XmlNodeType.Element Then
While vr.MoveToNextAttribute()
PrintTypeInfo(vr)
End While
End If
End While
Console.WriteLine("Validation finished")
End Sub
' Main
Public Shared Sub PrintTypeInfo(vr As XmlValidatingReader)
If Not (vr.SchemaType Is Nothing) Then
If TypeOf vr.SchemaType Is XmlSchemaDatatype Or TypeOf vr.SchemaType Is XmlSchemaSimpleType Then
Dim value As Object = vr.ReadTypedValue()
Console.WriteLine("{0}({1},{2}):{3}", vr.NodeType, vr.Name, value.GetType().Name, value)
End If
End If
End Sub
' PrintTypeInfo
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
[C#]
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("xdrHeadCount", "HeadCount.xdr");
vr.ValidationType = ValidationType.XDR;
vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);
while(vr.Read())
{
PrintTypeInfo(vr);
if(vr.NodeType == XmlNodeType.Element)
{
while(vr.MoveToNextAttribute())
PrintTypeInfo(vr);
}
}
Console.WriteLine("Validation finished");
}
public static void PrintTypeInfo(XmlValidatingReader vr)
{
if(vr.SchemaType != null)
{
if(vr.SchemaType is XmlSchemaDatatype || vr.SchemaType is XmlSchemaSimpleType)
{
object value = vr.ReadTypedValue();
Console.WriteLine("{0}({1},{2}):{3}", vr.NodeType, vr.Name, value.GetType().Name, value);
}
}
}
public static void ValidationHandler(object sender, ValidationEventArgs args)
{
Console.WriteLine("***Validation error");
Console.WriteLine("\tSeverity:{0}", args.Severity);
Console.WriteLine("\tMessage:{0}", args.Message);
}
}
}
Im folgenden Beispiel wird der Inhalt der zu überprüfenden Eingabedatei HeadCount.xml dargestellt.
<!--Load HeadCount.xdr in SchemaCollection for Validation-->
<HeadCount xmlns='xdrHeadCount'>
<Name>Waldo Pepper</Name>
<Name>Red Pepper</Name>
</HeadCount>
Im folgenden Beispiel wird der Inhalt der XDR-Schemadatei HeadCount.xdr dargestellt, die zur Überprüfung herangezogen wird.
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="Name" content="textOnly"/>
<AttributeType name="Bldg" default="2"/>
<ElementType name="HeadCount" content="eltOnly">
<element type="Name"/>
<attribute type="Bldg"/>
</ElementType>
</Schema>
Siehe auch
XmlSchemaCollection als Schemacache | Gültigkeitsprüfung von XML mit Schemas | XmlValidatingReader.ValidationType-Eigenschaft | XmlValidatingReader.Schemas-Eigenschaft