Extensions Classe

Definição

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

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

Exemplos

O XSD no ficheiro XSD de exemplo: Clientes e encomendas contém um esquema que pode ser usado para validar o documento XML no ficheiro XML de exemplo: Clientes e encomendas. O exemplo seguinte carrega o esquema e o documento, valida o documento, altera o documento para que a xs:key relação e xs:keyref não seja válida e depois tenta 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

Este exemplo produz a seguinte saída:

Validating custOrd
custOrd validated

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

Observações

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

Quando valida um XDocument, XElement, ou XAttribute, pode, opcionalmente, preencher a árvore XML com o conjunto de infos pós-validação do esquema. A informação PSVI é adicionada como uma anotação do tipo System.Xml.Schema.XmlSchemaInfo.

Métodos

Name Description
GetSchemaInfo(XAttribute)

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

GetSchemaInfo(XElement)

Obtém o conjunto de infos pós-validação do esquema (PSVI) de um elemento validado.

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

Valida que um XAttribute conforma a um especificado XmlSchemaObject e um XmlSchemaSet, preenchendo opcionalmente a árvore XML com o conjunto de infos pós-validação do esquema (PSVI).

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

Este método valida que um XAttribute se conforma a um especificado XmlSchemaObject e a um XmlSchemaSet.

Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean)

Valida que um XDocument conforma um XSD num XmlSchemaSet, preenchendo opcionalmente a árvore XML com o conjunto de infos pós-validação de esquema (PSVI).

Validate(XDocument, XmlSchemaSet, ValidationEventHandler)

Este método valida que um XDocument se conforma a um XSD num XmlSchemaSet.

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

Valida que uma XElement subárvore cumpre um especificado XmlSchemaObject e um XmlSchemaSet, preenchendo opcionalmente a árvore XML com o conjunto de infos pós-validação de esquema (PSVI).

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

Este método valida que uma XElement subárvore se conforma a um especificado XmlSchemaObject e a um XmlSchemaSet.

Aplica-se a