Condividi tramite


Extensions Classe

Definizione

Questa classe contiene i metodi di estensione LINQ to XML per la convalida XSD.

public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
Ereditarietà
Extensions

Esempio

XsD nel file XSD di esempio: clienti e ordini contiene uno schema che può essere usato per convalidare il documento XML nel file XML di esempio: Clienti e ordini. L'esempio seguente carica lo schema e il documento, convalida il documento, modifica il documento in modo che la xs:key relazione e xs:keyref non sia valida e quindi tenti di convalidare nuovamente.

                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  

Nell'esempio viene prodotto l'output seguente:

Validating custOrd  
custOrd validated  

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

Commenti

Questa classe contiene anche metodi per ottenere l'infoset di convalida post-schema (PSVI) di un nodo XML convalidato.

Quando si convalida un XDocumentoggetto , XElemento XAttribute, è anche possibile popolare facoltativamente l'albero XML con l'infoset di convalida post-schema. Le informazioni PSVI vengono aggiunte come annotazione di tipo System.Xml.Schema.XmlSchemaInfo.

Metodi

GetSchemaInfo(XAttribute)

Ottiene l'infoset dopo la convalida dello schema (PSVI) di un attributo convalidato.

GetSchemaInfo(XElement)

Ottiene l'infoset dopo la convalida dello schema (PSVI) di un elemento convalidato.

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

Questo metodo convalida che un XAttribute è conforme a un XmlSchemaObject e a un XmlSchemaSet.

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

Convalida che un XAttribute è conforme a un XmlSchemaObject specificato e a un XmlSchemaSet popolando facoltativamente la struttura ad albero XML con l'infoset dopo la convalida dello schema (PSVI).

Validate(XDocument, XmlSchemaSet, ValidationEventHandler)

Questo metodo convalida che un XDocument è conforme a uno schema XSD in un XmlSchemaSet.

Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean)

Convalida che un XDocument è conforme a uno schema XSD in un XmlSchemaSet, popolando facoltativamente la struttura ad albero XML con l'infoset dopo la convalida dello schema (PSVI).

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

Questo metodo convalida che una sottostruttura XElement è conforme a un XmlSchemaObject e a un XmlSchemaSet.

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

Convalida che una sottostruttura XElement è conforme a un XmlSchemaObject specificato e a un XmlSchemaSet popolando facoltativamente la struttura ad albero XML con l'infoset dopo la convalida dello schema (PSVI).

Si applica a