XmlDocument.Validate メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Schemas プロパティに格納されている XML スキーマ定義言語 (XSD) スキーマと照合して XmlDocument を検証します。
オーバーロード
Validate(ValidationEventHandler) |
Schemas プロパティに格納されている XML スキーマ定義言語 (XSD) スキーマと照合して XmlDocument を検証します。 |
Validate(ValidationEventHandler, XmlNode) |
Schemas プロパティの XML スキーマ定義言語 (XSD) スキーマと照合し、指定された XmlNode オブジェクトを検証します。 |
Validate(ValidationEventHandler)
- ソース:
- XmlDocument.cs
- ソース:
- XmlDocument.cs
- ソース:
- XmlDocument.cs
Schemas プロパティに格納されている XML スキーマ定義言語 (XSD) スキーマと照合して XmlDocument を検証します。
public:
void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler);
public void Validate (System.Xml.Schema.ValidationEventHandler? validationEventHandler);
public void Validate (System.Xml.Schema.ValidationEventHandler validationEventHandler);
member this.Validate : System.Xml.Schema.ValidationEventHandler -> unit
Public Sub Validate (validationEventHandler As ValidationEventHandler)
パラメーター
- validationEventHandler
- ValidationEventHandler
スキーマ検証の警告とエラーに関する情報を受け取る ValidationEventHandler オブジェクト。
例外
スキーマ検証イベントが発生しましたが、ValidationEventHandler オブジェクトが指定されていませんでした。
例
Validate メソッドの使用例を次に示します。 この例では、 XmlDocument オブジェクトと XmlReader オブジェクトを使用して、関連付けられた XSD スキーマを含む をXmlReaderSettings作成します。 次に、 クラスを XPathNavigator 使用して、スキーマ検証エラーを生成する XML ドキュメント内の要素の型指定された値を誤って変更します。
#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.xsd
ファイルをcontosoBooks.xml
入力として受け取ります。
<?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 、 プロパティに含まれるスキーマに XmlDocument 対して 内の XML データを Schemas 検証します。 メソッドは Validate 、インフォセット拡張を実行します。 具体的には、検証が成功すると、スキーマの既定値が適用され、テキスト値は必要に応じてアトミック値に変換され、型情報は検証済みの情報項目に関連付けられます。 結果は、 内の以前に型指定されていない XML サブツリー XmlDocument が型指定されたサブツリーに置き換えられます。
メソッドを使用する場合に考慮すべき重要な注意事項を次に Validate 示します。
や
xsi:noNamespaceSchemaLocation
などのxsi:schemaLocation
スキーマの場所ヒントは無視されます。インライン スキーマは無視されます。
検証中にスキーマ検証エラーが発生した場合、 XmlDocument は、正しい型情報を持ち、一部のノードではなしで部分的に検証されます。
検証プロセスには、一意性と参照制約 (
xs:ID
、xs:keyref
xs:IDREF
xs:key
、xs:unique
) のチェックが含まれます。
適用対象
Validate(ValidationEventHandler, XmlNode)
- ソース:
- XmlDocument.cs
- ソース:
- XmlDocument.cs
- ソース:
- XmlDocument.cs
public:
void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler, System::Xml::XmlNode ^ nodeToValidate);
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
Public Sub Validate (validationEventHandler As ValidationEventHandler, nodeToValidate As XmlNode)
パラメーター
- validationEventHandler
- ValidationEventHandler
スキーマ検証の警告とエラーに関する情報を受け取る ValidationEventHandler オブジェクト。
- nodeToValidate
- XmlNode
XmlDocument から作成された、検証対象の XmlNode オブジェクト。
例外
XmlNode オブジェクト パラメーターが XmlDocument から作成されていません。
XmlNode オブジェクト パラメーターが要素、属性、ドキュメント フラグメント、ルート ノードのいずれでもありません。
スキーマ検証イベントが発生しましたが、ValidationEventHandler オブジェクトが指定されていませんでした。
例
メソッドの Validate 例については、 メソッドを Validate 参照してください。
注釈
メソッドは Validate 、 プロパティに含まれるスキーマに XmlNode 対して オブジェクト内の XML データを Schemas 検証します。 メソッドは Validate 、インフォセット拡張を実行します。 具体的には、検証が成功すると、スキーマの既定値が適用され、テキスト値は必要に応じてアトミック値に変換され、型情報は検証済みの情報項目に関連付けられます。 結果は、 内の以前に型指定されていない XML サブツリー XmlDocument が型指定されたサブツリーに置き換えられます。
メソッドを使用する場合に考慮すべき重要な注意事項を次に Validate 示します。
や
xsi:noNamespaceSchemaLocation
などのxsi:schemaLocation
スキーマの場所ヒントは無視されます。インライン スキーマは無視されます。
検証中にスキーマ検証エラーが発生した場合、 XmlDocument は、正しい型情報を持ち、一部のノードではなしで部分的に検証されます。
検証するノードがルート ノードの場合、検証プロセスには一意性と参照制約 (xs:ID
、xs:keyref
xs:IDREF
xs:key
および xs:unique
) のチェックが含まれます。それ以外の場合は、一意性制約と参照制約が省略されます。
適用対象
.NET