Extensions 클래스

정의

이 클래스에는 XSD 유효성 검사에 대한 LINQ to XML 확장 메서드가 포함됩니다.

public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
상속
Extensions

예제

샘플 XSD 파일의 XSD: 고객 및 주문에는 샘플 XML 파일: 고객 및 주문에서 XML 문서의 유효성을 검사하는 데 사용할 수 있는 스키마가 포함되어 있습니다. 다음은 스키마와 문서를 로드하고, 문서의 유효성을 검사하고, 문서와 xs:keyref 관계가 유효하지 않도록 xs:key 문서를 변경한 다음 다시 유효성 검사를 시도하는 예제입니다.

                XmlSchemaSet schemas = new XmlSchemaSet();  
schemas.Add("", "CustomersOrders.xsd");  

XDocument custOrd = XDocument.Load("CustomersOrders.xml");  

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

// Modify the custOrd tree so that it is no longer valid.  
custOrd.Root.Element("Orders").Element("Order").Element("CustomerID").Value = "AAAAA";  

Console.WriteLine();  
Console.WriteLine("Validating custOrd");  
errors = false;  
custOrd.Validate(schemas, (o, e) =>  
                     {  
                         Console.WriteLine("{0}", e.Message);  
                         errors = true;  
                     });  
Console.WriteLine("custOrd {0}", errors ? "did not validate" : "validated");  
                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 schemas As XmlSchemaSet = New XmlSchemaSet()  
    schemas.Add("", "CustomersOrders.xsd")  

    Console.WriteLine("Validating custOrd")  
    Dim custOrd As XDocument = XDocument.Load("CustomersOrders.xml")  
    errors = False  
    custOrd.Validate(schemas, AddressOf XSDErrors)  
    Console.WriteLine("custOrd {0}", IIf(errors, "did not validate", "validated"))  

    Console.WriteLine()  
    Console.WriteLine("Validating custOrd")  
    ' Modify the source document so that it will not validate.  
    custOrd.Root.Element("Orders").Element("Order").Element("CustomerID").Value = "AAAAA"  
    errors = False  
    custOrd.Validate(schemas, AddressOf XSDErrors)  
    Console.WriteLine("custOrd {0}", IIf(errors, "did not validate", "validated"))  
End Sub  

이 예제는 다음과 같은 출력을 생성합니다.

Validating custOrd  
custOrd validated  

Validating custOrd  
The key sequence 'AAAAA' in Keyref fails to refer to some key.  
custOrd did not validate  

설명

이 클래스에는 유효성이 검사된 XML 노드의 PSVI(스키마 유효성 검사 후 정보 세트)를 가져오는 메서드도 포함되어 있습니다.

또는 유효성을 검사XDocumentXElementXAttribute할 때 필요에 따라 XML 트리를 스키마 유효성 검사 후 정보 세트로 채울 수도 있습니다. PSVI 정보는 형식 System.Xml.Schema.XmlSchemaInfo의 주석으로 추가됩니다.

메서드

GetSchemaInfo(XAttribute)

유효성이 검사된 특성의 PSVI(스키마 유효성 검사 이후 정보 집합)를 가져옵니다.

GetSchemaInfo(XElement)

유효성이 검사된 요소의 PSVI(스키마 유효성 검사 이후 정보 집합)를 가져옵니다.

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

이 메서드는 XAttribute가 지정된 XmlSchemaObjectXmlSchemaSet을 준수하는지 확인합니다.

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean)

XAttribute가 지정된 XmlSchemaObjectXmlSchemaSet을 준수하는지 확인하고, 선택적으로 XML 트리를 PSVI(스키마 유효성 검사 이후 정보 집합)로 채울 수 있습니다.

Validate(XDocument, XmlSchemaSet, ValidationEventHandler)

이 메서드는 XDocumentXmlSchemaSet에서 XSD를 준수하는지 확인합니다.

Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean)

XDocumentXmlSchemaSet에서 XSD를 준수하는지 확인하고, 선택적으로 XML 트리를 PSVI(스키마 유효성 검사 이후 정보 집합)로 채울 수 있습니다.

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

이 메서드는 XElement 하위 트리가 지정된 XmlSchemaObjectXmlSchemaSet을 준수하는지 확인합니다.

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean)

XElement 하위 트리가 지정된 XmlSchemaObjectXmlSchemaSet을 준수하는지 확인하고, 선택적으로 XML 트리를 PSVI(스키마 유효성 검사 이후 정보 집합)로 채울 수 있습니다.

적용 대상