XmlDocument.Validate XmlDocument.Validate XmlDocument.Validate Method

Definición

Valida el objeto XmlDocument según los esquemas del lenguaje de definición de esquemas XML (XSD) de la propiedad Schemas.Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

Sobrecargas

Validate(ValidationEventHandler) Validate(ValidationEventHandler) Validate(ValidationEventHandler)

Valida el objeto XmlDocument según los esquemas del lenguaje de definición de esquemas XML (XSD) de la propiedad Schemas.Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

Validate(ValidationEventHandler, XmlNode) Validate(ValidationEventHandler, XmlNode) Validate(ValidationEventHandler, XmlNode)

Valida el objeto XmlNode especificado según los esquemas del lenguaje de definición de esquemas XML (XSD) de la propiedad Schemas.Validates the XmlNode object specified against the XML Schema Definition Language (XSD) schemas in the Schemas property.

Validate(ValidationEventHandler) Validate(ValidationEventHandler) Validate(ValidationEventHandler)

Valida el objeto XmlDocument según los esquemas del lenguaje de definición de esquemas XML (XSD) de la propiedad Schemas.Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

public:
 void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler);
public void Validate (System.Xml.Schema.ValidationEventHandler validationEventHandler);
member this.Validate : System.Xml.Schema.ValidationEventHandler -> unit

Parámetros

validationEventHandler
ValidationEventHandler ValidationEventHandler ValidationEventHandler

Objeto ValidationEventHandler que recibe información sobre los errores y advertencias de validación de esquemas.The ValidationEventHandler object that receives information about schema validation warnings and errors.

Excepciones

Se ha producido un evento de validación de esquema y no se ha especificado ningún objeto ValidationEventHandler.A schema validation event occurred and no ValidationEventHandler object was specified.

Ejemplos

En el siguiente ejemplo, se muestra el uso del método Validate.The following example illustrates use of the Validate method. En el ejemplo se XmlDocument crea un objeto que contiene un esquema XSD XmlReaderSettings asociado XmlReader utilizando los objetos y.The example creates an XmlDocument that contains an associated XSD schema using the XmlReaderSettings and XmlReader objects. A continuación, el ejemplo XPathNavigator utiliza la clase para modificar incorrectamente el valor con tipo de un elemento en el documento XML que genera un error de validación de esquema.The example then uses the XPathNavigator class to incorrectly modify the typed value of an element in the XML document generating a schema validation error.

#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::Xml::XPath;

class XPathValidation
{
public:

    static void Main()
    {
        try
        {
            XmlReaderSettings^ settings = gcnew XmlReaderSettings();
            settings->Schemas->Add("http://www.contoso.com/books", "contosoBooks.xsd");
            settings->ValidationType = ValidationType::Schema;

            XmlReader^ reader = XmlReader::Create("contosoBooks.xml", settings);
            XmlDocument^ document = gcnew XmlDocument();
            document->Load(reader);

            ValidationEventHandler^ eventHandler = gcnew ValidationEventHandler(ValidationEventHandlerOne);

            // the following call to Validate succeeds.
            document->Validate(eventHandler);

            // add a node so that the document is no longer valid
            XPathNavigator^ navigator = document->CreateNavigator();
            navigator->MoveToFollowing("price", "http://www.contoso.com/books");
            XmlWriter^ writer = navigator->InsertAfter();
            writer->WriteStartElement("anotherNode", "http://www.contoso.com/books");
            writer->WriteEndElement();
            writer->Close();

            // the document will now fail to successfully validate
            document->Validate(eventHandler);
        }
        catch(Exception^ ex)
        {
            Console::WriteLine(ex->Message);
        }
    }

    static void ValidationEventHandlerOne(Object^ sender, ValidationEventArgs^ e)
    {
        switch (e->Severity)
        {
        case XmlSeverityType::Error:
            Console::WriteLine("Error: {0}", e->Message);
            break;
        case XmlSeverityType::Warning:
            Console::WriteLine("Warning {0}", e->Message);
            break;
        }

    }
};

int main()
{
    XPathValidation::Main();
    Console::ReadLine();
    return 0;
};
using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.XPath;

class XPathValidation
{
    static void Main()
    {
        try
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");
            settings.ValidationType = ValidationType.Schema;

            XmlReader reader = XmlReader.Create("contosoBooks.xml", settings);
            XmlDocument document = new XmlDocument();
            document.Load(reader);

            ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);

            // the following call to Validate succeeds.
            document.Validate(eventHandler);

            // add a node so that the document is no longer valid
            XPathNavigator navigator = document.CreateNavigator();
            navigator.MoveToFollowing("price", "http://www.contoso.com/books");
            XmlWriter writer = navigator.InsertAfter();
            writer.WriteStartElement("anotherNode", "http://www.contoso.com/books");
            writer.WriteEndElement();
            writer.Close();

            // the document will now fail to successfully validate
            document.Validate(eventHandler);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

    static void ValidationEventHandler(object sender, ValidationEventArgs e)
    {
        switch (e.Severity)
        {
            case XmlSeverityType.Error:
                Console.WriteLine("Error: {0}", e.Message);
                break;
            case XmlSeverityType.Warning:
                Console.WriteLine("Warning {0}", e.Message);
                break;
        }

    }
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.Xml.XPath

Class XPathValidation

    Shared Sub Main()

        Try

            Dim settings As XmlReaderSettings = New XmlReaderSettings()
            settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd")
            settings.ValidationType = ValidationType.Schema

            Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings)
            Dim document As XmlDocument = New XmlDocument()
            document.Load(reader)

            Dim eventHandler As ValidationEventHandler = New ValidationEventHandler(AddressOf ValidationEventHandler)

            ' the following call to Validate succeeds.
            document.Validate(eventHandler)

            ' add a node so that the document is no longer valid
            Dim navigator As XPathNavigator = document.CreateNavigator()
            navigator.MoveToFollowing("price", "http://www.contoso.com/books")
            Dim writer As XmlWriter = navigator.InsertAfter()
            writer.WriteStartElement("anotherNode", "http://www.contoso.com/books")
            writer.WriteEndElement()
            writer.Close()

            ' the document will now fail to successfully validate
            document.Validate(eventHandler)

        Catch ex As Exception

            Console.WriteLine(ex.Message)

        End Try

    End Sub

    Shared Sub ValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)

        Select Case e.Severity
            Case XmlSeverityType.Error
                Console.WriteLine("Error: {0}", e.Message)
            Case XmlSeverityType.Warning
                Console.WriteLine("Warning {0}", e.Message)
        End Select

    End Sub

End Class

En el ejemplo se contosoBooks.xml toman contosoBooks.xsd los archivos y como entrada.The example takes the contosoBooks.xml and contosoBooks.xsd files as input.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="bookstore">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="book">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="name" type="xs:string" />
                                        <xs:element minOccurs="0" name="first-name" type="xs:string" />
                                        <xs:element minOccurs="0" name="last-name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="price" type="xs:decimal" />
                        </xs:sequence>
                        <xs:attribute name="genre" type="xs:string" use="required" />
                        <xs:attribute name="publicationdate" type="xs:date" use="required" />
                        <xs:attribute name="ISBN" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Comentarios

El Validate método valida los datos XmlDocument XML del con respecto a los esquemas contenidos en la Schemas propiedad.The Validate method validates the XML data in the XmlDocument against the schemas contained in the Schemas property. El Validate método realiza el aumento del InfoSet.The Validate method performs infoset augmentation. En concreto, después de la validación correcta, se aplican los valores predeterminados de esquema, los valores de texto se convierten en valores atómicos según sea necesario y la información de tipo se asocia a elementos de información validados.Specifically, after successful validation, schema defaults are applied, text values are converted to atomic values as necessary, and type information is associated with validated information items. El resultado es un subárbol XML sin tipo previamente en el XmlDocument reemplazado con un subárbol con tipo.The result is a previously un-typed XML sub-tree in the XmlDocument replaced with a typed sub-tree.

A continuación se indican algunas notas importantes que se deben Validate tener en cuenta al utilizar el método.The following are important notes to consider when using the Validate method.

  • Se omiten las sugerencias xsi:schemaLocation de xsi:noNamespaceSchemaLocation ubicación de esquemas como o.Schema location hints like xsi:schemaLocation or xsi:noNamespaceSchemaLocation are ignored.

  • Se omiten los esquemas insertados.Inline schemas are ignored.

  • Si se producen errores de validación de esquemas durante la XmlDocument validación, se valida parcialmente con algunos nodos con información de tipo correcta y otros sin.If schema validation errors occur during validation the XmlDocument becomes partially validated with some nodes with correct type information and some without.

  • El proceso de validación incluye la comprobación de la unicidad y las restriccionesxs:IDde xs:IDREFreferencia xs:key( xs:keyref,, xs:unique, y).The validation process includes checking for uniqueness and reference constraints (xs:ID, xs:IDREF, xs:key, xs:keyref, and xs:unique).

Validate(ValidationEventHandler, XmlNode) Validate(ValidationEventHandler, XmlNode) Validate(ValidationEventHandler, XmlNode)

Valida el objeto XmlNode especificado según los esquemas del lenguaje de definición de esquemas XML (XSD) de la propiedad Schemas.Validates the XmlNode object specified against the XML Schema Definition Language (XSD) schemas in the Schemas property.

public:
 void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler, System::Xml::XmlNode ^ nodeToValidate);
public void Validate (System.Xml.Schema.ValidationEventHandler validationEventHandler, System.Xml.XmlNode nodeToValidate);
member this.Validate : System.Xml.Schema.ValidationEventHandler * System.Xml.XmlNode -> unit

Parámetros

validationEventHandler
ValidationEventHandler ValidationEventHandler ValidationEventHandler

Objeto ValidationEventHandler que recibe información sobre los errores y advertencias de validación de esquemas.The ValidationEventHandler object that receives information about schema validation warnings and errors.

nodeToValidate
XmlNode XmlNode XmlNode

Objeto XmlNode creado a partir de un XmlDocument que se va a validar.The XmlNode object created from an XmlDocument to validate.

Excepciones

El parámetro de objeto XmlNode no se creó a partir de un XmlDocument.The XmlNode object parameter was not created from an XmlDocument.

El parámetro de objeto XmlNode no es un elemento, atributo, fragmento de documento ni el nodo raíz.The XmlNode object parameter is not an element, attribute, document fragment, or the root node.

Se ha producido un evento de validación de esquema y no se ha especificado ningún objeto ValidationEventHandler.A schema validation event occurred and no ValidationEventHandler object was specified.

Ejemplos

Para obtener un ejemplo del Validate método, vea el Validate método.For an example of the Validate method, see the Validate method.

Comentarios

El Validate método valida los datos XmlNode XML del objeto con respecto a los esquemas contenidos en la Schemas propiedad.The Validate method validates the XML data in the XmlNode object against the schemas contained in the Schemas property. El Validate método realiza el aumento del InfoSet.The Validate method performs infoset augmentation. En concreto, después de la validación correcta, se aplican los valores predeterminados de esquema, los valores de texto se convierten en valores atómicos según sea necesario y la información de tipo se asocia a elementos de información validados.Specifically, after successful validation, schema defaults are applied, text values are converted to atomic values as necessary, and type information is associated with validated information items. El resultado es un subárbol XML sin tipo previamente en el XmlDocument reemplazado con un subárbol con tipo.The result is a previously un-typed XML sub-tree in the XmlDocument replaced with a typed sub-tree.

A continuación se indican algunas notas importantes que se deben Validate tener en cuenta al utilizar el método.The following are important notes to consider when using the Validate method.

  • Se omiten las sugerencias xsi:schemaLocation de xsi:noNamespaceSchemaLocation ubicación de esquemas como o.Schema location hints like xsi:schemaLocation or xsi:noNamespaceSchemaLocation are ignored.

  • Se omiten los esquemas insertados.Inline schemas are ignored.

  • Si se producen errores de validación de esquemas durante la XmlDocument validación, se valida parcialmente con algunos nodos con información de tipo correcta y otros sin.If schema validation errors occur during validation the XmlDocument becomes partially validated with some nodes with correct type information and some without.

Si el nodo que se va a validar es el nodo raíz, el proceso de validación incluye la comprobación de la unicidadxs:IDy las restricciones de referencia xs:unique(, xs:IDREF, xs:key, xs:keyrefy); en caso contrario, singularidad y referencia se omiten las restricciones.If the node to validate is the root node, the validation process includes checking for uniqueness and reference constraints (xs:ID, xs:IDREF, xs:key, xs:keyref, and xs:unique); otherwise, uniqueness and reference constraints are omitted.

Se aplica a