XmlDocument.Validate XmlDocument.Validate XmlDocument.Validate Method

정의

Schemas 속성에 포함된 XSD(XML 스키마 정의) 언어 스키마를 기준으로 XmlDocument의 유효성을 검사합니다.Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

오버로드

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

Schemas 속성에 포함된 XSD(XML 스키마 정의) 언어 스키마를 기준으로 XmlDocument의 유효성을 검사합니다.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)

Schemas 속성에 포함된 XSD(XML 스키마 정의) 언어 스키마를 기준으로, 지정된 XmlNode 개체의 유효성을 검사합니다.Validates the XmlNode object specified against the XML Schema Definition Language (XSD) schemas in the Schemas property.

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

Schemas 속성에 포함된 XSD(XML 스키마 정의) 언어 스키마를 기준으로 XmlDocument의 유효성을 검사합니다.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

매개 변수

validationEventHandler
ValidationEventHandler ValidationEventHandler ValidationEventHandler

스키마 유효성 검사 경고 및 오류에 대한 정보를 받는 ValidationEventHandler 개체입니다.The ValidationEventHandler object that receives information about schema validation warnings and errors.

예외

스키마 유효성 검사 이벤트가 발생했으며 ValidationEventHandler 개체가 지정되지 않았습니다.A schema validation event occurred and no ValidationEventHandler object was specified.

예제

다음 예제에서는 Validate 메서드를 사용하는 방법을 보여줍니다.The following example illustrates use of the Validate method. 이 예에서는 만듭니다는 XmlDocument 사용 하 여 연결 된 XSD 스키마를 포함 하는 XmlReaderSettingsXmlReader 개체입니다.The example creates an XmlDocument that contains an associated XSD schema using the XmlReaderSettings and XmlReader objects. 이 예제에서는 다음 사용은 XPathNavigator 스키마 유효성 검사 오류를 생성 하는 XML 문서에 있는 요소의 형식화 된 값을 올바르게 수정 하는 클래스입니다.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
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

이 예제에서는 사용 된 contosoBooks.xmlcontosoBooks.xsd 파일을 입력으로 합니다.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>

설명

Validate 메서드의 XML 데이터의 유효성을 검사 합니다 XmlDocument 에 포함 된 스키마에 대해는 Schemas 속성입니다.The Validate method validates the XML data in the XmlDocument against the schemas contained in the Schemas property. Validate 메서드 infoset 확대를 수행 합니다.The Validate method performs infoset augmentation. 특히, 유효성 검사에 성공한 후 스키마 기본값이 적용 됩니다, 텍스트 값이 필요에 따라 원자 값으로 변환 및 형식 정보는 유효성이 검사 된 정보 항목과 연결 됩니다.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. 결과 이전에 형식화 되지 않은 XML 하위 트리를는 XmlDocument 형식화 된 하위 트리를 사용 하 여 대체 합니다.The result is a previously un-typed XML sub-tree in the XmlDocument replaced with a typed sub-tree.

다음은 사용 하는 경우를 고려해 야 할 중요 한 정보는 Validate 메서드.The following are important notes to consider when using the Validate method.

  • 스키마 위치 힌트와 같은 xsi:schemaLocation 또는 xsi:noNamespaceSchemaLocation 무시 됩니다.Schema location hints like xsi:schemaLocation or xsi:noNamespaceSchemaLocation are ignored.

  • 인라인 스키마는 무시 됩니다.Inline schemas are ignored.

  • 유효성 검사 중에 스키마 유효성 검사 오류가 발생 하는 경우는 XmlDocument 가 올바른 형식 정보를 사용 하 여 일부 노드 없이 일부와 부분적으로 유효성을 검사 합니다.If schema validation errors occur during validation the XmlDocument becomes partially validated with some nodes with correct type information and some without.

  • 유효성 검사 프로세스는 고유성 및 참조 제약 조건에 대 한 확인이 포함 됩니다 (xs:ID, xs:IDREFxs:key합니다 xs:keyref, 및 xs:unique).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)

Schemas 속성에 포함된 XSD(XML 스키마 정의) 언어 스키마를 기준으로, 지정된 XmlNode 개체의 유효성을 검사합니다.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

매개 변수

validationEventHandler
ValidationEventHandler ValidationEventHandler ValidationEventHandler

스키마 유효성 검사 경고 및 오류에 대한 정보를 받는 ValidationEventHandler 개체입니다.The ValidationEventHandler object that receives information about schema validation warnings and errors.

nodeToValidate
XmlNode XmlNode XmlNode

XmlDocument에서 만든 XmlNode 개체이며 유효성을 검사할 대상입니다.The XmlNode object created from an XmlDocument to validate.

예외

XmlNode 개체 매개 변수는 XmlDocument에서 만들어지지 않았습니다.The XmlNode object parameter was not created from an XmlDocument.

XmlNode 개체 매개 변수는 요소, 특성, 문서 조각 또는 루트 노드가 아닙니다.The XmlNode object parameter is not an element, attribute, document fragment, or the root node.

스키마 유효성 검사 이벤트가 발생했으며 ValidationEventHandler 개체가 지정되지 않았습니다.A schema validation event occurred and no ValidationEventHandler object was specified.

예제

예는 Validate 메서드를 참조 합니다 Validate 메서드.For an example of the Validate method, see the Validate method.

설명

Validate 메서드의 XML 데이터의 유효성을 검사 합니다 XmlNode 개체에 포함 된 스키마에 대해는 Schemas 속성입니다.The Validate method validates the XML data in the XmlNode object against the schemas contained in the Schemas property. Validate 메서드 infoset 확대를 수행 합니다.The Validate method performs infoset augmentation. 특히, 유효성 검사에 성공한 후 스키마 기본값이 적용 됩니다, 텍스트 값이 필요에 따라 원자 값으로 변환 및 형식 정보는 유효성이 검사 된 정보 항목과 연결 됩니다.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. 결과 이전에 형식화 되지 않은 XML 하위 트리를는 XmlDocument 형식화 된 하위 트리를 사용 하 여 대체 합니다.The result is a previously un-typed XML sub-tree in the XmlDocument replaced with a typed sub-tree.

다음은 사용 하는 경우를 고려해 야 할 중요 한 정보는 Validate 메서드.The following are important notes to consider when using the Validate method.

  • 스키마 위치 힌트와 같은 xsi:schemaLocation 또는 xsi:noNamespaceSchemaLocation 무시 됩니다.Schema location hints like xsi:schemaLocation or xsi:noNamespaceSchemaLocation are ignored.

  • 인라인 스키마는 무시 됩니다.Inline schemas are ignored.

  • 유효성 검사 중에 스키마 유효성 검사 오류가 발생 하는 경우는 XmlDocument 가 올바른 형식 정보를 사용 하 여 일부 노드 없이 일부와 부분적으로 유효성을 검사 합니다.If schema validation errors occur during validation the XmlDocument becomes partially validated with some nodes with correct type information and some without.

유효성 검사 프로세스 고유성 및 참조 제약 조건에 대 한 확인을 포함 유효성을 검사할 노드입니다 루트 노드인 경우 (xs:ID, xs:IDREFxs:key, xs:keyref, 및 xs:unique)이 고, 그렇지 않으면 고유성 및 참조 제약 조건 생략 됩니다.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.

적용 대상