XmlReaderSettings.ValidationFlags 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
스키마 유효성 검사 설정을 나타내는 값을 가져오거나 설정합니다. 이 설정은 스키마(ValidationType.Schema
로 설정된 ValidationType 속성) 유효성 검사를 하는 XmlReader 개체에 적용됩니다.
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 면 및 ProcessSchemaLocation 유효성 검사 플래그가 설정된 경우에도 ProcessInlineSchema 스키마 위치가 확인되지 null
않습니다.
문서의 유효성을 검사하는 동안 스키마를 추가하면 새 형식이 추가되고 해당 문서에 대한 유효성 검사 결과가 달라질 수 있습니다. 결과적으로 외부 스키마는 신뢰할 수 있는 소스에서만 확인해야 합니다.
문서의 많은 부분에 대해 ID 제약 조건이 있는 스키마에 대해 고가용성 시나리오에서 신뢰할 수 없는 대규모 XML 문서의 유효성을 검사할 때 플래그를 사용하지 않도록 ProcessIdentityConstraints 설정하는 것이 좋습니다(기본적으로 사용).
적용 대상
추가 정보
.NET