Freigeben über


Gültigkeitsprüfung von XML-Schema (XSD) mit mehreren Schemas

Mit XmlValidatingReader können XML-Dokumente anhand von XSD (XML Schema definition language)-Schemas von verschiedenen Schemas aus überprüft werden. Der XmlValidatingReader-Konstruktor verwendet einen Stream eines XML-Fragments sowie XmlNodeType und XmlParserContext.

Hinweis   Im folgenden Beispiel wird das Hauptelement nicht überprüft. Wenn ValidationType auf Schema gesetzt ist, gibt XmlValidatingReader eine Warnung für das Stammelement aus.

Im folgenden Codebeispiel wird ein XmlValidatingReader erstellt, der den Stream Mixed.xml als Eingabe verwendet und XML-Fragmente anhand verschiedener Schemaquellen überprüft.

Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema

Namespace ValidationSample
    
   Class Sample
      
      Public Shared Sub Main()
         Dim stream As New FileStream("Mixed.xml", FileMode.Open)
         Dim vr As New XmlValidatingReader(stream, XmlNodeType.Element, Nothing)
         
         vr.Schemas.Add(Nothing, "Book.xsd")
         vr.Schemas.Add(Nothing, "Tape.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
[C#]
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;

namespace ValidationSample
{
   class Sample
   {
      public static void Main()
      {
         FileStream stream = new FileStream("Mixed.xml", FileMode.Open);
         XmlValidatingReader vr = new XmlValidatingReader(stream, XmlNodeType.Element, null);

         vr.Schemas.Add(null, "Book.xsd");
         vr.Schemas.Add(null, "Tape.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);
      }
   }
}

Im folgenden Beispiel wird der Inhalt der XML-Schemadatei Book.xsd dargestellt, die zur Überprüfung herangezogen wird.

<xs:schema xmlns="urn:bookstore-schema"
         targetNamespace="urn:bookstore-schema"
         xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="book">
      <xs:complexType>
         <xs:simpleContent>
            <xs:extension base="xs:string">
               <xs:attribute name="price" type="xs:decimal" />
            </xs:extension>
         </xs:simpleContent>
      </xs:complexType>
   </xs:element>
</xs:schema>

Im folgenden Beispiel wird der Inhalt der XML-Schemadatei Tape.xsd dargestellt, die zur Überprüfung herangezogen wird.

<xs:schema xmlns="urn:tapestore-schema"
         targetNamespace="urn:tapestore-schema"
         xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="tape" type="xs:string"/>
</xs:schema>

Im folgenden Beispiel wird der Inhalt des XML-Streams Mixed.xml dargestellt, der die zu überprüfenden XML-Fragmente enthält.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:dvdstore-schema" targetNamespace="urn:dvdstore-schema">
    <xs:element name="dvd" type="xs:string" />
  </xs:schema>
  <pb:book price="7.99" xmlns:pb="urn:bookstore-schema">The Autobiography of Benjamin Franklin</pb:book>
  <pd:dvd xmlns:pd="urn:dvdstore-schema">The Godfather</pd:dvd>
  <pt:tape xmlns:pt="urn:tapestore-schema" xsi:schemaLocation="urn:tapestore-schema tape.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Il Postino</pt:tape>

Siehe auch

XML-Gültigkeitsprüfung mit XmlValidatingReader | Gültigkeitsprüfung von XML mit Schemas