Extensions 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 클래스에는 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의 주석으로 추가됩니다.