XmlReaderSettings.ValidationFlags プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
スキーマ検証の設定を示す値を取得または設定します。 この設定は、スキーマを検証する XmlReader オブジェクトに適用されます (ValidationType.Schema
に設定されている ValidationType プロパティ)。
public:
property System::Xml::Schema::XmlSchemaValidationFlags ValidationFlags { System::Xml::Schema::XmlSchemaValidationFlags get(); void set(System::Xml::Schema::XmlSchemaValidationFlags value); };
public System.Xml.Schema.XmlSchemaValidationFlags ValidationFlags { get; set; }
member this.ValidationFlags : System.Xml.Schema.XmlSchemaValidationFlags with get, set
Public Property ValidationFlags As XmlSchemaValidationFlags
プロパティ値
検証オプションを指定する列挙値のビットごとの組み合わせ。 ProcessIdentityConstraints および AllowXmlAttributes は既定で有効になります。 ProcessInlineSchema、ProcessSchemaLocation、および ReportValidationWarnings は既定で無効になります。
例
次の例では、 設定を有効にして、インライン XML スキーマに対して XML ファイルを ProcessInlineSchema 検証します。 XML リーダーは検証警告を表示するように構成されているため、ルート要素に予期される警告も表示されます。
using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;
public class ValidXSD {
public static void Main() {
// Set the validation settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
// Create the XmlReader object.
XmlReader reader = XmlReader.Create("inlineSchema.xml", settings);
// Parse the file.
while (reader.Read());
}
// Display any warnings or errors.
private static void ValidationCallBack (object sender, ValidationEventArgs args) {
if (args.Severity==XmlSeverityType.Warning)
Console.WriteLine("\tWarning: Matching schema not found. No validation occurred." + args.Message);
else
Console.WriteLine("\tValidation error: " + args.Message);
}
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO
public class ValidXSD
public shared sub Main()
' Set the validation settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.ValidationFlags = settings.ValidationFlags Or XmlSchemaValidationFlags.ProcessInlineSchema
settings.ValidationFlags = settings.ValidationFlags Or XmlSchemaValidationFlags.ReportValidationWarnings
AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("inlineSchema.xml", settings)
' Parse the file.
while (reader.Read())
end while
end sub
' Display any warnings or errors.
private shared sub ValidationCallBack (sender as object, args as ValidationEventArgs)
if (args.Severity=XmlSeverityType.Warning)
Console.WriteLine(" Warning: Matching schema not found. No validation occurred." + args.Message)
else
Console.WriteLine(" Validation error: " + args.Message)
end if
end sub
end class
この例では、inlineSchema.xml ファイルを入力として使用します。
<root>
<!--Start of schema-->
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
xmlns='xsdHeadCount'
targetNamespace='xsdHeadCount'>
<xs:element name='HeadCount'>
<xs:complexType>
<xs:sequence>
<xs:element name='ID' type='xs:unsignedShort' maxOccurs='unbounded' />
</xs:sequence>
<xs:attribute name='division' type='xs:string' use='optional' default='QA'/>
</xs:complexType>
</xs:element>
</xs:schema>
<!--End of schema-->
<hc:HeadCount xmlns:hc='xsdHeadCount'>
<ID>12365</ID>
<ID>43295</ID>
<division>Accounting</division>
</hc:HeadCount>
</root>
出力は次のようになります。
警告: 一致するスキーマが見つかりません。 検証が実行されませんでした。 要素 'root' のスキーマ情報が見つかりませんでした。
検証エラー: 要素 'xsdHeadCount:HeadCount' に無効な子要素 'division' があります。 'ID' を指定してください。"
注釈
重要
ProcessInlineSchema オブジェクトの ProcessSchemaLocation および XmlReaderSettings の検証フラグは、既定では設定されていません。 これらのフラグが設定されていると、XmlResolver オブジェクトの XmlReaderSettings が XmlReader のインスタンス ドキュメント中に出現したスキーマの場所を解決するために使用されます。 オブジェクトが のXmlResolver場合、 null
と ProcessSchemaLocation の検証フラグが設定されていても、スキーマのProcessInlineSchema場所は解決されません。
検証を実行しているときにスキーマを追加すると新しい型が追加されるため、検証しているドキュメントの検証結果を変えることができます。 結果として、信頼できるソースからの外部スキーマだけが解決されるようにする必要があります。
ドキュメントの大部分に対する ID 制約を ProcessIdentityConstraints 持つスキーマに対して高可用性シナリオで、信頼されていない大きな XML ドキュメントを検証する場合は、フラグを無効にすることをお勧めします (既定で有効)。
適用対象
こちらもご覧ください
.NET