XmlDocument.Validate XmlDocument.Validate XmlDocument.Validate Method

定義

XmlDocument プロパティに格納されている XML スキーマ定義言語 (XSD) スキーマと照合して Schemas を検証します。Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

オーバーロード

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

XmlDocument プロパティに格納されている XML スキーマ定義言語 (XSD) スキーマと照合して 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)

Schemas プロパティの XML スキーマ定義言語 (XSD) スキーマと照合し、指定された XmlNode オブジェクトを検証します。Validates the XmlNode object specified against the XML Schema Definition Language (XSD) schemas in the Schemas property.

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

XmlDocument プロパティに格納されている XML スキーマ定義言語 (XSD) スキーマと照合して 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

パラメーター

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 、オブジェクトXmlReaderSettingsXmlReaderオブジェクトを使用して、関連付けられた XSD スキーマを含むを作成します。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.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は、 Schemasプロパティに格納されXmlDocumentているスキーマに対して、内の XML データを検証します。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. 結果は、型指定されたサブツリーに置き換えられXmlDocumentた、以前に型指定されていない XML サブツリーになります。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:keyxs:IDREF、、 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 プロパティの XML スキーマ定義言語 (XSD) スキーマと照合し、指定された 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は、 Schemasプロパティに格納されXmlNodeているスキーマに対して、オブジェクト内の XML データを検証します。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. 結果は、型指定されたサブツリーに置き換えられXmlDocumentた、以前に型指定されていない XML サブツリーになります。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:keyxs:IDREF、、 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.

適用対象