Extensions Classe

Definição

Essa classe contém os métodos de extensão LINQ to XML para validação de XSD.

public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
Herança
Extensions

Exemplos

O XSD no arquivo XSD de exemplo: clientes e pedidos contêm um esquema que pode ser usado para validar o documento XML no arquivo XML de exemplo: clientes e pedidos. O exemplo a seguir carrega o esquema e o documento, valida o documento, altera o documento para que a relação e xs:keyref a xs:key relação não sejam válidas e tente validar novamente.

                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  

Esse exemplo gera a saída a seguir:

Validating custOrd  
custOrd validated  

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

Comentários

Essa classe também contém métodos para obter o PSVI (conjunto de informações pós-validação de esquema) de um nó XML validado.

Ao validar um XDocument, XElementou XAttribute, você também pode preencher opcionalmente a árvore XML com o conjunto de informações pós-validação de esquema. As informações do PSVI são adicionadas como uma anotação do tipo System.Xml.Schema.XmlSchemaInfo.

Métodos

GetSchemaInfo(XAttribute)

Obtém o PSVI (infoset de validação pós-esquema) de um atributo validado.

GetSchemaInfo(XElement)

Obtém o PSVI (post-schema-validation infoset) de um elemento validado.

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

Esse método valida que um XAttribute está em conformidade com um XmlSchemaObject e um XmlSchemaSet especificados.

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

Valida se um XAttribute está em conformidade com um XmlSchemaObject e XmlSchemaSet especificados, opcionalmente, populando a árvore XML com o PSVI (infoset de validação pós-esquema).

Validate(XDocument, XmlSchemaSet, ValidationEventHandler)

Esse método valida se um XDocument está em conformidade com um XSD em um XmlSchemaSet.

Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean)

Valida que um XDocument está em conformidade com um XSD em um XmlSchemaSet, opcionalmente, preenchendo a árvore XML com o PSVI (post-schema-validation infoset).

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

Esse método valida que uma subárvore XElement está em conformidade com um XmlSchemaObject e um XmlSchemaSet especificados.

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

Valida se uma subárvore XElement está em conformidade com um XmlSchemaObject e XmlSchemaSet especificados, opcionalmente, populando a árvore XML com o PSVI (infoset de validação pós-esquema).

Aplica-se a