Extensions.GetSchemaInfo Extensions.GetSchemaInfo Extensions.GetSchemaInfo Extensions.GetSchemaInfo Method

정의

유효성이 검사된 노드의 PSVI(스키마 유효성 검사 이후 정보 집합)를 가져옵니다.Gets the post-schema-validation infoset (PSVI) of a validated node.

오버로드

GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute)

유효성이 검사된 특성의 PSVI(스키마 유효성 검사 이후 정보 집합)를 가져옵니다.Gets the post-schema-validation infoset (PSVI) of a validated attribute.

GetSchemaInfo(XElement) GetSchemaInfo(XElement) GetSchemaInfo(XElement) GetSchemaInfo(XElement)

유효성이 검사된 요소의 PSVI(스키마 유효성 검사 이후 정보 집합)를 가져옵니다.Gets the post-schema-validation infoset (PSVI) of a validated element.

설명

유효성을 검사 한 후는 XDocument에 스키마 유효성 검사 이후 정보 집합에 대 한 검색할 수 있습니다는 XElement 또는 XAttribute 문서에 포함 된 합니다.After you have validated an XDocument, you can retrieve the post-schema-validation infoset for an XElement or XAttribute that is contained in the document.

검색 한 후 합니다 IXmlSchemaInfo 개체를 사용할 수는 SchemaAttribute 또는 SchemaElement 부분 유효성 검사 형식을 가져올 속성 (XmlSchemaElement 또는 XmlSchemaAttribute).After retrieving the IXmlSchemaInfo object, you can use the SchemaAttribute or SchemaElement properties to get a partial validation type (XmlSchemaElement or XmlSchemaAttribute). 부분 유효성 검사 형식 특성 또는 하위 트리의 유효성 검사에 사용할 수 있습니다.You can use the partial validation types to validate an attribute or a sub-tree.

GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute)

유효성이 검사된 특성의 PSVI(스키마 유효성 검사 이후 정보 집합)를 가져옵니다.Gets the post-schema-validation infoset (PSVI) of a validated attribute.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Xml::Schema::IXmlSchemaInfo ^ GetSchemaInfo(System::Xml::Linq::XAttribute ^ source);
public static System.Xml.Schema.IXmlSchemaInfo GetSchemaInfo (this System.Xml.Linq.XAttribute source);
static member GetSchemaInfo : System.Xml.Linq.XAttribute -> System.Xml.Schema.IXmlSchemaInfo
<Extension()>
Public Function GetSchemaInfo (source As XAttribute) As IXmlSchemaInfo

매개 변수

source
XAttribute XAttribute XAttribute XAttribute

이전에 유효성을 검사한 XAttribute입니다.An XAttribute that has been previously validated.

반환

IXmlSchemaInfo에 대한 스키마 유효성 검사 이후 정보 집합이 포함된 XAttribute입니다.A IXmlSchemaInfo that contains the post-schema-validation infoset for an XAttribute.

설명

사용할 수는 IXmlSchemaInfo 유효성이 검사 된 특성의 특정 특성을 결정이 메서드에서 반환 합니다.You can use the IXmlSchemaInfo returned by this method to determine certain characteristics of a validated attribute. 예를 들어 XSD의 기본 특성 값에서 가져왔는지 확인할 수 있습니다.For example, you can determine if the attribute came from a default attribute value in an XSD.

사용 된 SchemaAttribute 부분 유효성 검사 유형을 가져올 속성 (XmlSchemaAttribute).You use the SchemaAttribute property to get a partial validation type (XmlSchemaAttribute). 전체 문서 유효성 검사 하지 않고 특성을 유효성 검사를 사용할 수 있습니다.You can use it to revalidate an attribute without validating an entire document.

이 속성의 예제를 참조 하세요. Validate합니다.For an example of this property, see Validate.

GetSchemaInfo(XElement) GetSchemaInfo(XElement) GetSchemaInfo(XElement) GetSchemaInfo(XElement)

유효성이 검사된 요소의 PSVI(스키마 유효성 검사 이후 정보 집합)를 가져옵니다.Gets the post-schema-validation infoset (PSVI) of a validated element.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Xml::Schema::IXmlSchemaInfo ^ GetSchemaInfo(System::Xml::Linq::XElement ^ source);
public static System.Xml.Schema.IXmlSchemaInfo GetSchemaInfo (this System.Xml.Linq.XElement source);
static member GetSchemaInfo : System.Xml.Linq.XElement -> System.Xml.Schema.IXmlSchemaInfo
<Extension()>
Public Function GetSchemaInfo (source As XElement) As IXmlSchemaInfo

매개 변수

source
XElement XElement XElement XElement

이전에 유효성을 검사한 XElement입니다.An XElement that has been previously validated.

반환

IXmlSchemaInfo에 대한 PSVI(스키마 유효성 검사 이후 정보 집합)가 포함된 XElement입니다.A IXmlSchemaInfo that contains the post-schema-validation infoset (PSVI) for an XElement.

예제

다음 예제에서는 PSVI 사용 하 여 트리를 채웁니다.The following example populates the tree with a PSVI. 유효성 검사 후 모든 특성과 해당 요소 트리의 PSVI에 따라 유효 하지 않은 출력 합니다.After validation, it prints all elements and attributes in the tree that are invalid according to the PSVI.


                static void DumpInvalidNodes(XElement el)  
{  
    if (el.GetSchemaInfo().Validity != XmlSchemaValidity.Valid)  
        Console.WriteLine("Invalid Element {0}",  
            el.AncestorsAndSelf()  
            .InDocumentOrder()  
            .Aggregate("", (s, i) => s + "/" + i.Name.ToString()));  
    foreach (XAttribute att in el.Attributes())  
        if (att.GetSchemaInfo().Validity != XmlSchemaValidity.Valid)  
            Console.WriteLine("Invalid Attribute {0}",  
                att  
                .Parent  
                .AncestorsAndSelf()  
                .InDocumentOrder()  
                .Aggregate("",  
                    (s, i) => s + "/" + i.Name.ToString()) + "/@" + att.Name.ToString()  
                );  
    foreach (XElement child in el.Elements())  
        DumpInvalidNodes(child);  
}  

static void Main(string[] args)  
{  
    string xsdMarkup =  
         @"<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>  
   <xsd:simpleType name='GCType'>  
    <xsd:restriction base='xsd:token'>  
     <xsd:enumeration value='AAA'/>  
     <xsd:enumeration value='BBB'/>  
    </xsd:restriction>  
   </xsd:simpleType>  
   <xsd:element name='Root'>  
    <xsd:complexType>  
     <xsd:sequence>  
      <xsd:element name='Child1' minOccurs='1' maxOccurs='1'>  
       <xsd:complexType>  
        <xsd:sequence>  
         <xsd:element name='GrandChild1' type='GCType'/>  
         <xsd:element name='GrandChild2' type='GCType'/>  
         <xsd:element name='GrandChild3' type='GCType'/>  
        </xsd:sequence>  
       </xsd:complexType>  
      </xsd:element>  
     </xsd:sequence>  
    </xsd:complexType>  
   </xsd:element>  
  </xsd:schema>";  

    XmlSchemaSet schemas = new XmlSchemaSet();  
    schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));  

    XDocument doc1 = new XDocument(  
        new XElement("Root",  
            new XElement("Child1",  
                new XElement("GrandChild1", "AAA"),  
                new XElement("GrandChild2", "ZZZ"),  
                new XElement("GrandChild3", "ZZZ")  
            )  
        )  
    );  

    Console.WriteLine("Validating doc1 ...");  
    bool errors = false;  
    doc1.Validate(schemas, (sender, e) =>  
    {  
        Console.WriteLine(e.Message);  
        errors = true;  
    }, true);  
    Console.WriteLine("doc1 {0}", errors ? "did not validate" : "validated");  
    DumpInvalidNodes(doc1.Root);  
}  

                Private Sub DumpInvalidNodes(ByVal el As XElement)  
    If el.GetSchemaInfo.Validity <> XmlSchemaValidity.Valid Then  
        Console.WriteLine("Invalid Element {0}", _  
            el _  
            .AncestorsAndSelf _  
            .InDocumentOrder() _  
            .Aggregate("", _  
                Function(ByVal s, ByVal i) s + "/" + i.Name.ToString()))  
    End If  
    For Each att As XAttribute In el.Attributes()  
        If att.GetSchemaInfo.Validity <> XmlSchemaValidity.Valid Then  
            Console.WriteLine("Invalid Attribute {0}", _  
                att _  
                .Parent _  
                .AncestorsAndSelf() _  
                .InDocumentOrder() _  
                .Aggregate("", _  
                    Function(ByVal s, ByVal i) s + "/" + i.Name.ToString()) + _  
                    "/@" + att.Name.ToString())  
        End If  
    Next  
    For Each child As XElement In el.Elements()  
        DumpInvalidNodes(child)  
    Next  
End Sub  

Dim errors As Boolean = False  

Private Sub XSDErrors(ByVal o As Object, ByVal e As ValidationEventArgs)  
    Console.WriteLine("{0}", e.Message)  
    errors = True  
End Sub  

Sub Main()  
    Dim xsdMarkup As XDocument = _  
    <?xml version='1.0'?>  
    <xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>  
        <xsd:simpleType name='GCType'>  
            <xsd:restriction base='xsd:token'>  
                <xsd:enumeration value='AAA'/>  
                <xsd:enumeration value='BBB'/>  
            </xsd:restriction>  
        </xsd:simpleType>  
        <xsd:element name='Root'>  
            <xsd:complexType>  
                <xsd:sequence>  
                    <xsd:element name='Child1' minOccurs='1' maxOccurs='1'>  
                        <xsd:complexType>  
                            <xsd:sequence>  
                                <xsd:element name='GrandChild1' type='GCType'/>  
                                <xsd:element name='GrandChild2' type='GCType'/>  
                                <xsd:element name='GrandChild3' type='GCType'/>  
                            </xsd:sequence>  
                        </xsd:complexType>  
                    </xsd:element>  
                </xsd:sequence>  
            </xsd:complexType>  
        </xsd:element>  
    </xsd:schema>  

    Dim schemas As XmlSchemaSet = New XmlSchemaSet()  
    schemas.Add("", xsdMarkup.CreateReader)  

    Dim doc1 As XDocument = _  
    <?xml version='1.0'?>  
    <Root>  
        <Child1>  
            <GrandChild1>AAA</GrandChild1>  
            <GrandChild2>ZZZ</GrandChild2>  
            <GrandChild3>ZZZ</GrandChild3>  
        </Child1>  
    </Root>  

    Console.WriteLine("Validating doc1 ...")  
    errors = False  
    doc1.Validate(schemas, AddressOf XSDErrors, True)  
    Console.WriteLine("doc1 {0}", IIf(errors, "did not validate", "validated"))  
    DumpInvalidNodes(doc1.Root)  
End Sub  

이 예제는 다음과 같은 출력을 생성합니다.This example produces the following output:

Validating doc1 ...  
The 'GrandChild2' element is invalid - The value 'ZZZ' is invalid according to its datatype 'GCType' - The Enumeration constraint failed.  
The 'GrandChild3' element is invalid - The value 'ZZZ' is invalid according to its datatype 'GCType' - The Enumeration constraint failed.  
doc1 did not validate  
Invalid Element /Root  
Invalid Element /Root/Child1  
Invalid Element /Root/Child1/GrandChild2  
Invalid Element /Root/Child1/GrandChild3  

설명

사용할 수는 IXmlSchemaInfo 유효성이 검사 된 요소의 특정 특성을 확인 하려면이 메서드에서 반환 합니다.You can use the IXmlSchemaInfo returned by this method to determine certain characteristics of a validated element. 예를 들어, 요소의 동적 스키마 형식을 확인할 수 있습니다.For example, you can determine the dynamic schema type of the element.

사용 된 SchemaElement 부분 유효성 검사 유형을 가져올 속성 (XmlSchemaElement).You use the SchemaElement property to get a partial validation type (XmlSchemaElement). 하위 트리의 루트 요소를 사용 하 여 전체 문서 유효성 검사 하지 않고 유효성 검사를 사용할 수 있습니다.You can use it to revalidate a sub-tree with an element at its root without validating an entire document.

이 속성의 예제를 참조 하세요. Validate합니다.For an example of this property, see Validate.

적용 대상