XmlReaderSettings.ValidationFlags XmlReaderSettings.ValidationFlags XmlReaderSettings.ValidationFlags XmlReaderSettings.ValidationFlags Property

정의

스키마 유효성 검사 설정을 나타내는 값을 가져오거나 설정합니다.Gets or sets a value indicating the schema validation settings. 이 설정은 스키마(ValidationType.Schema로 설정된 ValidationType 속성) 유효성 검사를 하는 XmlReader 개체에 적용됩니다.This setting applies to XmlReader objects that validate schemas (ValidationType property set to ValidationType.Schema).

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

속성 값

유효성 검사 옵션을 지정 하는 열거형 값의 비트 조합입니다.A bitwise combination of enumeration values that specify validation options. ProcessIdentityConstraintsAllowXmlAttributes는 기본적으로 사용되고ProcessIdentityConstraints and AllowXmlAttributes are enabled by default. ProcessInlineSchema, ProcessSchemaLocationReportValidationWarnings는 기본적으로 사용되지 않습니다.ProcessInlineSchema, ProcessSchemaLocation, and ReportValidationWarnings are disabled by default.

예제

다음 예제에서는 인라인 XML 스키마에 대 한 XML 파일을 사용 하 여 유효성을 검사 합니다 ProcessInlineSchema 설정 합니다.The following example validates an XML file against an inline XML Schema by enabling the ProcessInlineSchema setting. 유효성 검사 경고를 표시 하는 XML 판독기를 구성, sp 볼 수도 예상 되는 경고의 루트 요소에 합니다.The XML reader is configured to display validation warnings, sp you also see the expected warning on the root element.

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 

입력Input

이 예제에서는 inlineSchema.xml 파일을 입력으로 사용합니다.The example uses the inlineSchema.xml file as input.

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

OutputOutput

경고: 일치 하는 스키마를 찾을 수 없습니다.Warning: Matching schema not found. 유효성 검사가 실행되지 않았습니다.No validation occurred. 'root' 요소에 대한 스키마 정보를 찾을 수 없습니다.Could not find schema information for the element 'root'.

유효성 검사 오류: ' XsdHeadCount: 인원 ' 요소에 잘못 된 자식 요소 ' 나누기 '가 있습니다.Validation error: The element 'xsdHeadCount:HeadCount' has invalid child element 'division'. 'ID'가 있어야 합니다."Expected 'ID'.

설명

중요

ProcessInlineSchema 개체의 ProcessSchemaLocationXmlReaderSettings 유효성 검사 플래그는 기본적으로 설정되지 않습니다.The ProcessInlineSchema and ProcessSchemaLocation validation flags of an XmlReaderSettings object are not set by default. 이 플래그를 설정하면 XmlResolver 개체의 XmlReaderSettings를 사용하여 XmlReader에서 인스턴스 문서에 나타난 스키마 위치를 확인할 수 있습니다.When these flags are set, the XmlResolver of the XmlReaderSettings object is used to resolve schema locations encountered in the instance document in the XmlReader. 경우는 XmlResolver 개체가 null, 스키마 위치는 확인 되지 않습니다 경우에 합니다 ProcessInlineSchemaProcessSchemaLocation 유효성 검사 플래그를 설정 합니다.If the XmlResolver object is null, schema locations are not resolved even if the ProcessInlineSchema and ProcessSchemaLocation validation flags are set.

문서의 유효성을 검사하는 동안 스키마를 추가하면 새 형식이 추가되고 해당 문서에 대한 유효성 검사 결과가 달라질 수 있습니다.Schemas added during validation add new types and can change the validation outcome of the document being validated. 결과적으로 외부 스키마는 신뢰할 수 있는 소스에서만 확인해야 합니다.As a result, external schemas should only be resolved from trusted sources.

사용 하지 않도록 설정 된 ProcessIdentityConstraints 유효성 검사, 신뢰할 수 없는 큰 XML 문서의 많은 부분을 통해 id 제약 조건이 있는 스키마에 대해 가용성 우선 시나리오에서 설명 하는 경우 (기본적으로 사용) 플래그는 것이 좋습니다.Disabling the ProcessIdentityConstraints flag (enabled by default) is recommended when validating, untrusted, large XML documents in high availability scenarios against a schema with identity constraints over a large part of the document.

적용 대상

추가 정보