Поделиться через


Extensions Класс

Определение

Этот класс содержит методы расширения LINQ to XML для проверки XSD.

public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
Наследование
Extensions

Примеры

XSD в примере XSD-файла: клиенты и заказы содержит схему, которую можно использовать для проверки XML-документа в примере XML-файла: Клиенты и заказы. В следующем примере загружается схема и документ, проверяется документ, изменяется документ таким образом, что xs:key связь и xs:keyref является недопустимой, а затем предпринимается попытка повторной проверки.

                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  

Комментарии

Этот класс также содержит методы для получения набора сведений после проверки схемы (PSVI) проверенного XML-узла.

При проверке XDocument, XElementили XAttributeпри необходимости можно заполнить XML-дерево набором сведений после проверки схемы. Сведения о PSVI добавляются в виде заметки типа System.Xml.Schema.XmlSchemaInfo.

Методы

GetSchemaInfo(XAttribute)

Получает набор сведений после проверки схемы (PSVI) для проверенного атрибута.

GetSchemaInfo(XElement)

Получает набор сведений после проверки схемы (PSVI) для проверенного элемента.

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

Этот метод проверяет XAttribute на соответствие указанным XmlSchemaObject и XmlSchemaSet.

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

Проверяет XAttribute на соответствие указанным XmlSchemaObject и XmlSchemaSet, с возможностью заполнения дерева XML набором сведений после проверки схемы (PSVI).

Validate(XDocument, XmlSchemaSet, ValidationEventHandler)

Этот метод проверяет соответствие XDocument спецификации XSD в XmlSchemaSet.

Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean)

Проверяет XDocument на соответствие XSD в XmlSchemaSet с возможностью заполнения дерева XML набором сведений после проверки схемы (PSVI).

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

Этот метод проверяет поддерево XElement на соответствие указанным XmlSchemaObject и XmlSchemaSet.

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

Проверяет поддерево XElement на соответствие указанным XmlSchemaObject и XmlSchemaSet, с возможностью заполнения дерева XML набором сведений после проверки схемы (PSVI).

Применяется к