XPathNavigator を使用したスキーマ検証Schema Validation using XPathNavigator

XmlDocument クラスを使用して、XmlDocument オブジェクトに含まれる XML コンテンツを 2 つの方法で検証することができます。Using the XmlDocument class, you can validate the XML content contained in an XmlDocument object in two ways. 最初の方法は、検証型 XmlReader オブジェクトを使用して XML コンテンツを検証する方法で、2 番目の方法は、Validate クラスの XmlDocument メソッドを使用する方法です。The first way is to validate the XML content using a validating XmlReader object and the second way is to use the Validate method of the XmlDocument class. XPathDocument クラスを使用して XML コンテンツの読み取り専用の検証を行うこともできます。You can also perform read-only validation of XML content using the XPathDocument class.

XML データの検証Validating XML Data

XmlDocument クラスは、既定では DTD または XML スキーマ定義言語 (XSD) のスキーマ検証を使用した XML ドキュメントの検証は行いません。The XmlDocument class does not validate an XML document using either DTD or XML schema definition language (XSD) schema validation by default. XML ドキュメントが整形式であることを確認するだけです。It only verifies that the XML document is well formed.

XML ドキュメントを検証する最初の方法は、検証型の XmlDocument オブジェクトを使用して、ドキュメントが XmlReader オブジェクトに読み込まれる際に検証する方法です。The first way to validate an XML document is to validate the document as it is loaded into an XmlDocument object using a validating XmlReader object. 2 番目の方法は、Validate クラスの XmlDocument メソッドを使用して、以前に型指定されていない XML ドキュメントを検証する方法です。The second way is to validate a previously untyped XML document using the Validate method of the XmlDocument class. いずれの場合も、検証済みの XML ドキュメントに対して行った変更は、Validate クラスの XmlDocument メソッドを使用して再度検証することができます。In both cases, changes to the validated XML document can be revalidated using the Validate method of the XmlDocument class.

読み込み時のドキュメントの検証Validating a Document as it is Loaded

検証型 XmlReader オブジェクトは、XmlReaderSettings オブジェクトをパラメーターとして受け取る Create クラスの XmlReader メソッドに XmlReaderSettings オブジェクトを渡すことで作成できます。A validating XmlReader object is created by passing an XmlReaderSettings object to the Create method of the XmlReader class that takes an XmlReaderSettings object as a parameter. パラメーターとして渡された XmlReaderSettings オブジェクトには、ValidationType が設定された Schema プロパティがあり、XmlDocument オブジェクトに含まれる XML ドキュメントの XML スキーマが Schemas プロパティに追加されています。The XmlReaderSettings object passed as a parameter has a ValidationType property set to Schema and an XML Schema for the XML document contained in the XmlDocument object added to its Schemas property. 検証型 XmlReader オブジェクトは、次に XmlDocument オブジェクトを作成するために使用されます。The validating XmlReader object is then used to create the XmlDocument object.

次の例では、検証型 contosoBooks.xml オブジェクトを使用して、XmlDocument オブジェクトを作成することにより、XmlDocument ファイルを XmlReader オブジェクトに読み込む際に検証を行います。The following example validates the contosoBooks.xml file as it is loaded into the XmlDocument object by creating the XmlDocument object using a validating XmlReader object. この XML ドキュメントはそのスキーマに照らして有効なので、スキーマの検証エラーや警告は何も生成されません。Because the XML document is valid according to its schema, no schema validation errors or warnings are generated.

Imports System  
Imports System.Xml  
Imports System.Xml.Schema  
Imports System.Xml.XPath  
  
Class ValidatingReaderExample  
  
    Shared Sub Main(ByVal args() As String)  
  
        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 navigator As XPathNavigator = document.CreateNavigator()  
  
        Catch e As Exception  
            Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message)  
        End Try  
  
    End Sub  
  
    Shared Sub SchemaValidationHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)  
  
        Select Case e.Severity  
            Case XmlSeverityType.Error  
                Console.WriteLine("Schema Validation Error: {0}", e.Message)  
                Exit Sub  
            Case XmlSeverityType.Warning  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message)  
                Exit Sub  
        End Select  
  
    End Sub  
  
End Class  
using System;  
using System.Xml;  
using System.Xml.Schema;  
using System.Xml.XPath;  
  
class ValidatingReaderExample  
{  
    static void Main(string[] args)  
    {  
        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);  
            XPathNavigator navigator = document.CreateNavigator();  
        }  
        catch (Exception e)  
        {  
            Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message);  
        }  
    }  
  
    static void SchemaValidationHandler(object sender, ValidationEventArgs e)  
    {  
        switch (e.Severity)  
        {  
            case XmlSeverityType.Error:  
                Console.WriteLine("Schema Validation Error: {0}", e.Message);  
                break;  
            case XmlSeverityType.Warning:  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message);  
                break;  
        }  
    }  
}  

この例は、contosoBooks.xml ファイルを入力として使用します。The example takes the contosoBooks.xml file as an 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>

また、contosoBooks.xsd ファイルも入力として使用します。The example also takes the contosoBooks.xsd as an input.

<?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>

上記の例では、XmlSchemaValidationException を呼び出したときに属性や要素の型が検証スキーマで指定されている型と一致しなかった場合、Load がスローされます。In the above example, an XmlSchemaValidationException will be thrown when Load is called if any attribute or element type does not match the corresponding type specified in the validating schema. 検証を行う ValidationEventHandlerXmlReader が設定されている場合、無効な型が検出されるたびに ValidationEventHandler が呼び出されます。If a ValidationEventHandler is set on the validating XmlReader, the ValidationEventHandler will get called whenever an invalid type is encountered.

XmlSchemaExceptionTypedValue に設定されている属性または要素が invalid によりアクセスされると、XPathNavigator がスローされます。An XmlSchemaException will be thrown when an attribute or element with TypedValue set to invalid is accessed by the XPathNavigator.

Validity を使用して属性または要素にアクセスするとき、XPathNavigator プロパティを使用して、個々の属性または要素が有効かどうかを判断できます。The Validity property can be used to determine whether or not an individual attribute or element is valid when accessing attributes or elements with the XPathNavigator.

注意

XML ドキュメントが既定値を定義した関連付けられたスキーマと共に XmlDocument オブジェクトに読み込まれる場合、XmlDocument オブジェクトは、これらの既定値があたかも XML ドキュメント内にあるかのように扱います。When an XML document is loaded into an XmlDocument object with an associated schema that defines default values, the XmlDocument object treats these defaults as if they appeared in the XML document. これは、XML ドキュメントで空要素として書かれていても、スキーマから既定値を得た要素に対して IsEmptyElement プロパティは常に false を返すことを意味します。This means that the IsEmptyElement property always returns false for an element that was defaulted from the schema, even if in the XML document it was written as an empty element.

Validate メソッドを使用したドキュメントの検証Validating a Document using the Validate Method

Validate クラスの XmlDocument メソッドは、XmlDocument オブジェクトの XmlDocument プロパティで指定されたスキーマに対して、Schemas オブジェクトに含まれる XML ドキュメントを検証し、情報セットの拡大を実施します。The Validate method of the XmlDocument class validates the XML document contained in an XmlDocument object against the schemas specified in the XmlDocument object's Schemas property and performs infoset augmentation. 結果として、XmlDocument オブジェクト中の以前は型指定されていない XML ドキュメントは型指定されたドキュメントに置き換わります。The result is a previously untyped XML document in the XmlDocument object replaced with a typed document.

XmlDocument オブジェクトは、ValidationEventHandler メソッドへのパラメーターとして渡された Validate デリゲートを使用してスキーマ検証のエラーと警告を報告します。The XmlDocument object reports schema validation errors and warnings using the ValidationEventHandler delegate passed as a parameter to the Validate method.

次の例では、contosoBooks.xml オブジェクトの XmlDocument プロパティに含まれる contosoBooks.xsd スキーマに対して、XmlDocument オブジェクトに含まれる Schemas ファイルを検証します。The following example validates the contosoBooks.xml file contained in the XmlDocument object against the contosoBooks.xsd schema contained in the XmlDocument object's Schemas property.

Imports System  
Imports System.Xml  
Imports System.Xml.Schema  
Imports System.Xml.XPath  
  
Class ValidateExample  
  
    Shared Sub Main(ByVal args() As String)  
  
        Dim document As XmlDocument = New XmlDocument()  
        document.Load("contosoBooks.xml")  
        Dim navigator As XPathNavigator = document.CreateNavigator()  
  
        document.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd")  
        Dim validation As ValidationEventHandler = New ValidationEventHandler(AddressOf SchemaValidationHandler)  
  
        document.Validate(validation)  
  
    End Sub  
  
    Shared Sub SchemaValidationHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)  
  
        Select Case e.Severity  
            Case XmlSeverityType.Error  
                Console.WriteLine("Schema Validation Error: {0}", e.Message)  
                Exit Sub  
            Case XmlSeverityType.Warning  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message)  
                Exit Sub  
        End Select  
  
    End Sub  
  
End Class  
using System;  
using System.Xml;  
using System.Xml.Schema;  
using System.Xml.XPath;  
  
class ValidateExample  
{  
    static void Main(string[] args)  
    {  
        XmlDocument document = new XmlDocument();  
        document.Load("contosoBooks.xml");  
        XPathNavigator navigator = document.CreateNavigator();  
  
        document.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");  
        ValidationEventHandler validation = new ValidationEventHandler(SchemaValidationHandler);  
  
        document.Validate(validation);  
    }  
  
    static void SchemaValidationHandler(object sender, ValidationEventArgs e)  
    {  
        switch (e.Severity)  
        {  
            case XmlSeverityType.Error:  
                Console.WriteLine("Schema Validation Error: {0}", e.Message);  
                break;  
            case XmlSeverityType.Warning:  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message);  
                break;  
        }  
    }  
}  

この例は、contosoBooks.xml ファイルを入力として使用します。The example takes the contosoBooks.xml file as an 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>

また、contosoBooks.xsd ファイルも入力として使用します。The example also takes the contosoBooks.xsd as an input.

<?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>

変更点の検証Validating Modifications

XML ドキュメントに変更が施された後、Validate クラスの XmlDocument メソッドを使用して、変更点を XML ドキュメントのスキーマに対して検証できます。After modifications are made to an XML document, you can validate the modifications against the schema for the XML document using the Validate method of the XmlDocument class.

次の例では、検証型 contosoBooks.xml オブジェクトを使用して、XmlDocument オブジェクトを作成することにより、XmlDocument ファイルを XmlReader オブジェクトに読み込む際に検証を行います。The following example validates the contosoBooks.xml file as it is loaded into the XmlDocument object by creating the XmlDocument object using a validating XmlReader object. XML ドキュメントは、スキーマ検証のエラーや警告を生成せずに、読み込み時に問題なく検証されます。The XML document is validated successfully as it is loaded without generating any schema validation errors or warnings. 次に、この例で contosoBooks.xsd スキーマに従うと無効な 2 つの変更が XML ドキュメントに施されます。The example then makes two modifications to the XML document that are invalid according to the contosoBooks.xsd schema. 最初の変更点は、無効な子要素を挿入してスキーマ検証エラーを引き起こします。2 番目の変更点は、型指定されたノードにノードの型に反して無効な値を設定し、例外が発生します。The first modification inserts an invalid child element resulting in a schema validation error, and the second modification sets the value of a typed node to a value that is invalid according to the type of the node resulting in an exception.

Imports System  
Imports System.Xml  
Imports System.Xml.Schema  
Imports System.Xml.XPath  
  
Class ValidatingReaderExample  
  
    Shared Sub Main(ByVal args() As String)  
  
        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 navigator As XPathNavigator = document.CreateNavigator()  
  
            Dim validation As ValidationEventHandler = New ValidationEventHandler(AddressOf SchemaValidationHandler)  
  
            navigator.MoveToChild("bookstore", "http://www.contoso.com/books")  
            navigator.MoveToChild("book", "http://www.contoso.com/books")  
            navigator.MoveToChild("author", "http://www.contoso.com/books")  
  
            navigator.AppendChild("<title>Book Title</title>")  
  
            document.Validate(validation)  
  
            navigator.MoveToParent()  
            navigator.MoveToChild("price", "http://www.contoso.com/books")  
            navigator.SetTypedValue(DateTime.Now)  
        Catch e As Exception  
            Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message)  
        End Try  
  
    End Sub  
  
    Shared Sub SchemaValidationHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)  
  
        Select Case e.Severity  
            Case XmlSeverityType.Error  
                Console.WriteLine("Schema Validation Error: {0}", e.Message)  
                Exit Sub  
            Case XmlSeverityType.Warning  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message)  
                Exit Sub  
        End Select  
  
    End Sub  
  
End Class  
using System;  
using System.Xml;  
using System.Xml.Schema;  
using System.Xml.XPath;  
  
class ValidatingReaderExample  
{  
    static void Main(string[] args)  
    {  
        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);  
            XPathNavigator navigator = document.CreateNavigator();  
  
            ValidationEventHandler validation = new ValidationEventHandler(SchemaValidationHandler);  
  
            navigator.MoveToChild("bookstore", "http://www.contoso.com/books");  
            navigator.MoveToChild("book", "http://www.contoso.com/books");  
            navigator.MoveToChild("author", "http://www.contoso.com/books");  
  
            navigator.AppendChild("<title>Book Title</title>");  
  
            document.Validate(validation);  
  
            navigator.MoveToParent();  
            navigator.MoveToChild("price", "http://www.contoso.com/books");  
            navigator.SetTypedValue(DateTime.Now);  
        }  
        catch (Exception e)  
        {  
            Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message);  
        }  
    }  
  
    static void SchemaValidationHandler(object sender, ValidationEventArgs e)  
    {  
        switch (e.Severity)  
        {  
            case XmlSeverityType.Error:  
                Console.WriteLine("Schema Validation Error: {0}", e.Message);  
                break;  
            case XmlSeverityType.Warning:  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message);  
                break;  
        }  
    }  
}  

この例は、contosoBooks.xml ファイルを入力として使用します。The example takes the contosoBooks.xml file as an 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>

また、contosoBooks.xsd ファイルも入力として使用します。The example also takes the contosoBooks.xsd as an input.

<?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>

上の例では、XmlDocument オブジェクトに含まれる XML ドキュメントに 2 つの変更が施されます。In the example above, two modifications are made to the XML document contained in the XmlDocument object. XML ドキュメントが読み込まれるに従い、発見されたスキーマ検証エラーは検証イベント ハンドラー メソッドで処理され、コンソールに書き出されました。As the XML document was loaded, any schema validation errors encountered would have been handled by the validation event handler method and written to the console.

この例では、XML ドキュメントが読み込まれた後に検証エラーが挿入され、Validate クラスの XmlDocument メソッドを使用して発見されました。In this example, the validation errors were introduced after the XML document was loaded and were found using the Validate method of the XmlDocument class.

SetTypedValue クラスの XPathNavigator メソッドを使用して行われた変更は、新しい値がノードのスキーマ型に照らして無効だったので、InvalidCastException が発生しました。Modifications made using the SetTypedValue method of the XPathNavigator class resulted in an InvalidCastException because the new value was invalid according to the schema type of the node.

SetTypedValue メソッドを使用して値を変更する方法の詳細については、「XpathNavigator による XML データの変更」のトピックを参照してください。For more information about modifying values using the SetTypedValue method, see the Modify XML Data using XPathNavigator topic.

読み取り専用の検証Read-Only Validation

XPathDocument クラスは、XML ドキュメントの読み取り専用のメモリ内表現です。The XPathDocument class is a read-only, in-memory representation of an XML document. XPathDocument クラスと XmlDocument クラスは両方とも、XML ドキュメントを編集しナビゲートするために XPathNavigator オブジェクトを作成します。Both the XPathDocument class and the XmlDocument class create XPathNavigator objects to navigate and edit XML documents. XPathDocument クラスは読み取り専用のクラスなので、XPathNavigator オブジェクトから返された XPathDocument オブジェクトは XPathDocument オブジェクトに含まれる XML ドキュメントを編集できません。Because the XPathDocument class is a read-only class, XPathNavigator object's returned from XPathDocument objects cannot edit the XML document contained in the XPathDocument object.

このトピックで前述したように、検証の場合は、検証型 XPathDocument オブジェクトを使用して XmlDocument オブジェクトを作成したのと同様にして、XmlReader オブジェクトを作成できます。In the case of validation, you can create an XPathDocument object just like you create an XmlDocument object using a validating XmlReader object as described earlier in this topic. XPathDocument オブジェクトは読み込みの際に XML ドキュメントを検証しますが、XPathDocument オブジェクト内の XML データは編集できないので、XML ドキュメントの再検証はできません。The XPathDocument object validates the XML document as it is loaded, but because you cannot edit the XML data in the XPathDocument object, you cannot revalidate the XML document.

読み取り専用および編集可能な XPathNavigator オブジェクトについては、「XPathDocument および XmlDocument を使用した XML データの読み取り」のトピックを参照してください。For more information about read-only and editable XPathNavigator objects, see the Reading XML Data using XPathDocument and XmlDocument topic.

関連項目See also