Convalida con uno schema XDR inline

È possibile utilizzare XmlValidatingReader per convalidare un documento XML rispetto a uno schema XDR (XML-Data Reduced) inline.

Nell'esempio di codice che segue viene creato un XmlValidatingReader che accetta un XmlTextReader. Il file di input, HeadCount.xml, viene convalidato rispetto allo schema XDR inline.

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.ValidationType = ValidationType.XDR
         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()
      {
         XmlTextReader tr = new XmlTextReader("HeadCount.xml");
         XmlValidatingReader vr = new XmlValidatingReader(tr);

         vr.ValidationType = ValidationType.XDR;
         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);
      }
   }
}

Di seguito viene indicato il contenuto del file di input, HeadCount.xml, da convalidare.

<root>
   <Schema name='xdrHeadCount' xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
      <ElementType name="Name" content="textOnly"/>
      <ElementType name="HeadCount" content="eltOnly">
         <element type="Name"/>
      </ElementType>
   </Schema>
   <HeadCount xmlns='x-schema:#xdrHeadCount'>
      <Name>Waldo Pepper</Name>
      <Name>Red Pepper</Name>
   </HeadCount>
</root>

Nell'esempio di codice che segue viene creato un XmlValidatingReader che accetta un XmlTextReader. Il file di input, sample3.xml, viene convalidato rispetto allo schema XDR inline. Dal momento che non è disponibile un attributo xmlns, lo schema inline viene specificato come lo schema predefinito. In questo caso, la dichiarazione dello spazio dei nomi, xmlns="x-schema", non è obbligatoria.

Dim tr As New XmlTextReader("sample3.xml")
Dim vr As New XmlValidatingReader(tr)
vr.ValidationType = ValidationType.XDR
AddHandler vr.ValidationEventHandler, AddressOf ValidationCallBack
While vr.Read()
   Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name)
End While
[C#]
XmlTextReader tr = new XmlTextReader("sample3.xml");
XmlValidatingReader vr = new XmlValidatingReader(tr);
vr.ValidationType = ValidationType.XDR;
vr.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
while(vr.Read()) {
    Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name);
    }

Di seguito viene indicato il contenuto del file di input, sample3.xml, da convalidare.

<root>
    <Schema 
      xmlns="urn:schemas-microsoft-com:xml-data" 
      xmlns:dt="urn:schemas-microsoft-com:datatypes">
        
      <ElementType name='row'>
      </ElementType>

      <ElementType name='data'>
        <element type='row' minOccurs='0' maxOccurs='*'/>
      </ElementType>
    </Schema>
    <data>
      <row/>
      <row/>
    </data>
</root>

Vedere anche

Convalida del linguaggio XML con XmlValidatingReader | Convalida del linguaggio XML con schemi