Validierung anhand von DTD mit "XmlValidatingReader"
DTD-Validierungen (Document Type Definition) werden unter Verwendung von Gültigkeitsbeschränkungen implementiert, die in der W3C-Empfehlung zu Extensible Markup Language (XML) 1.0 definiert sind. DTDs verwenden eine formale Grammatik zur Beschreibung der Struktur und Syntax kompatibler XML-Dokumente und legen fest, welche Inhalte und Werte für das XML-Dokument zulässig sind.
Zur Ausführung einer DTD-Validierung verwendet der XmlValidatingReader die in der DOCTYPE-Deklaration eines XML-Dokuments definierte DTD. Die DOCTYPE-Deklaration kann entweder auf eine Inline-DTD oder auf eine externe DTD-Datei verweisen.
Hinweis |
---|
Die XmlValidatingReader-Klasse ist in .NET Framework, Version 2.0 veraltet.Mit der XmlReaderSettings-Klasse und der Create-Methode können Sie eine XmlReader-Instanz zur Validierung erstellen.Weitere Informationen finden Sie unter Validieren von XML-Daten mit "XmlReader". |
Beispiel
Im folgenden Codebeispiel wird ein XmlValidatingReader erstellt, der einen XmlTextReader erfordert. Die Eingabedatei "HeadCount.xml" wird anhand der externen DTD-Datei "HeadCount.dtd" validiert. Es werden alle Angaben zum Schweregrad und Fehlermeldungen angezeigt.
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
public class ValidationSample
public shared sub Main()
Dim tr As XmlTextReader = new XmlTextReader("HeadCount.xml")
Dim vr As XmlValidatingReader = new XmlValidatingReader(tr)
vr.ValidationType = ValidationType.DTD
AddHandler vr.ValidationEventHandler, AddressOf ValidationCallback
while(vr.Read())
end while
Console.WriteLine("Validation finished")
end sub
public shared sub ValidationCallBack (sender As object, args As ValidationEventArgs)
Console.WriteLine("***Validation error")
Console.WriteLine("Severity:{0}", args.Severity)
Console.WriteLine("Message:{0}", args.Message)
end sub
end class
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.ValidationType = ValidationType.DTD;
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);
}
}
}
Im folgenden Beispiel wird der Inhalt der zu validierenden Eingabedatei HeadCount.xml dargestellt.
<!DOCTYPE HeadCount SYSTEM "HeadCount.dtd">
<HeadCount>
<Name First="Waldo" Last="Pepper">
<Name First="Salt" Last="Pepper" Relation="spouse"/>
<Name First="Red" Last="Pepper" Relation="child"/>
</Name>
<Name First="&MyFirst;" Last="&MyLast;">
<Name First="Sharon" Last="&MyLast;" Relation="spouse"/>
<Name First="Morgan" Last="&MyLast;" Relation="child"/>
<Name First="Shelby" Last="&MyLast;" Relation="child"/>
</Name>
</HeadCount>
Im folgenden Beispiel wird der Inhalt der externen DTD-Datei "HeadCount.dtd" dargestellt, die zur Validierung herangezogen wird.
<!ELEMENT HeadCount (Name)*>
<!ELEMENT Name (Name)*>
<!ATTLIST Name First CDATA #REQUIRED>
<!ATTLIST Name Last CDATA #REQUIRED>
<!ATTLIST Name Relation (self | spouse | child) "self">
<!ENTITY MyFirst "Jeff">
<!ENTITY MyLast "Smith">
Siehe auch
Konzepte
Lesen von XML mit dem "XmlReader"