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:keyxs: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или XElementXAttributeпри необходимости можно заполнить xml-дерево с помощью набора сведений после проверки схемы. Сведения PSVI добавляются в виде заметки типа System.Xml.Schema.XmlSchemaInfo.

Методы

Имя Описание
GetSchemaInfo(XAttribute)

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

GetSchemaInfo(XElement)

Возвращает набор сведений после проверки схемы (PSVI) проверенного элемента.

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

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

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

Этот метод проверяет соответствие XAttribute заданному и заданному XmlSchemaObjectXmlSchemaSet.

Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean)

Проверяет, соответствует ли XDocument XSD в XmlSchemaSetxml-дереве при необходимости заполнение XML-дерева набором сведений после проверки схемы (PSVI).

Validate(XDocument, XmlSchemaSet, ValidationEventHandler)

Этот метод проверяет соответствие XDocument XSD в объекте XmlSchemaSet.

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

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

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

Этот метод проверяет соответствие XElement вложенного дерева указанному и заданному XmlSchemaObjectXmlSchemaSet.

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