Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede realizar la validación con respecto a un esquema de lenguaje XSD (XML Schema Definition, definición de esquemas XML) en línea mediante XmlValidatingReader.
Nota Dado que el esquema en línea aparece como elemento secundario del elemento raíz, éste no se puede validar cuando se realiza una validación de esquema en línea. XmlValidatingReader genera una advertencia para el elemento raíz si ValidationType se establece como Schema.
En el ejemplo de código siguiente se crea un XmlValidatingReader que acepta un XmlTextReader. El archivo de entrada, HeadCount.xml, se valida con respecto a un esquema XML en línea.
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Namespace ValidationSample
Class Sample
Private Shared _ValidationErrorsCount As Integer = 0
Public Shared Sub Main()
Dim stream As New FileStream("HeadCount.xml", FileMode.Open)
Dim vr As New XmlValidatingReader(stream, XmlNodeType.Element, Nothing)
vr.ValidationType = ValidationType.Schema
AddHandler vr.ValidationEventHandler, AddressOf ValidationHandler
While vr.Read()
End While
Console.WriteLine("Validation finished: {0} validation errors", _ValidationErrorsCount)
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)
_ValidationErrorsCount += 1
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
{
static int _ValidationErrorsCount = 0;
public static void Main()
{
FileStream stream = new FileStream("HeadCount.xml", FileMode.Open);
XmlValidatingReader vr = new XmlValidatingReader(stream, XmlNodeType.Element, null);
vr.ValidationType = ValidationType.Schema;
vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);
while(vr.Read());
Console.WriteLine("Validation finished: {0} validation errors", _ValidationErrorsCount);
}
public static void ValidationHandler(object sender, ValidationEventArgs args)
{
Console.WriteLine("***Validation error");
Console.WriteLine("\tSeverity:{0}", args.Severity);
Console.WriteLine("\tMessage :{0}", args.Message);
_ValidationErrorsCount++;
}
}
}
A continuación se describe el contenido del archivo de entrada, HeadCount.xml, que se va a validar.
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
xmlns='xsdHeadCount'
targetNamespace='xsdHeadCount'>
<xs:element name='HeadCount'>
<xs:complexType>
<xs:sequence>
<xs:element name='Name' type='xs:string' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='division' type='xs:string' use='optional' default='QA'/>
</xs:complexType>
</xs:element>
</xs:schema>
<hc:HeadCount xmlns:hc='xsdHeadCount'>
<Name>Waldo Pepper</Name>
<Name>Red Pepper</Name>
</hc:HeadCount>
En el ejemplo de código siguiente se crea un XmlValidatingReader que acepta un XmlTextReader. El archivo de entrada, Sample5.xml, se valida con respecto a un esquema XML en línea.
Dim tr As New XmlTextReader("Sample5.xml")
Dim vr As New XmlValidatingReader(tr)
vr.ValidationType = ValidationType.Schema
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("Sample5.xml");
XmlValidatingReader vr = new XmlValidatingReader(tr);
vr.ValidationType = ValidationType.Schema;
vr.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
while(vr.Read()) {
Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name);
}
A continuación se describe el contenido del archivo de entrada, Sample5.xml, que se va a validar.
<test>
<schema targetNamespace='test' xmlns='http://www.w3.org/2001/XMLSchema' >
<element name='zip' type='positiveInteger'/>
</schema>
<t:zip xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:t='test'>
123
</t:zip>
</test>
Vea también
Validación de XML con XmlValidatingReader | Validación de XML con esquemas