Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A Recomendação de Esquema XML do World Wide Web Consortium (W3C) discute o conjunto de informações (infoset) que deve ser exposto para validação pré-esquema e compilação pós-esquema. O Modelo de Objeto de Esquema XML (SOM) observa esta exposição antes e depois do método CompileXmlSchemaSet ser chamado.
O infoset de validação pré-esquema é criado durante a edição do esquema. O conjunto de informações de compilação pós-esquema é gerado depois que o método Compile do XmlSchemaSet é chamado, durante a compilação do esquema, e é exposto como propriedades.
O SOM é o modelo de objeto que representa os infosets de validação pré-esquema e compilação pós-esquema; ele consiste nas classes no System.Xml.Schema namespace. Todas as propriedades de leitura e gravação de classes no System.Xml.Schema namespace pertencem ao infoset de validação pré-esquema, enquanto todas as propriedades somente leitura de classes no System.Xml.Schema namespace pertencem ao infoset de compilação pós-esquema. A exceção a essa regra são as seguintes propriedades, que são propriedades do infoset de validação pré-esquema e do infoset de compilação pós-esquema.
Por exemplo, as classes XmlSchemaElement e XmlSchemaComplexType têm propriedades BlockResolved e FinalResolved. Essas propriedades são usadas para armazenar os valores para as propriedades Block e Final após o esquema ter sido compilado e validado.
BlockResolved e FinalResolved são propriedades de leitura apenas que fazem parte do conjunto de informações da compilação pós-esquema.
O exemplo a seguir mostra a ElementSchemaType propriedade do conjunto de XmlSchemaElement classes após validar o esquema. Antes da validação, a propriedade contém uma null referência e a SchemaTypeName é definida como o nome do tipo em questão. Após a validação, o SchemaTypeName é resolvido para um tipo válido e o objeto de tipo fica disponível através da ElementSchemaType propriedade.
using System;
using System.Xml;
using System.Xml.Schema;
public class PsciSample
{
public static void Main(string[] args)
{
XmlSchema schema = new XmlSchema();
// Create an element of type integer and add it to the schema.
XmlSchemaElement priceElem = new XmlSchemaElement();
priceElem.Name = "Price";
priceElem.SchemaTypeName = new XmlQualifiedName("integer", "http://www.w3.org/2001/XMLSchema");
schema.Items.Add(priceElem);
// Print the pre-compilation value of the ElementSchemaType property
// of the XmlSchemaElement which is a PSCI property.
Console.WriteLine("Before compilation the ElementSchemaType of Price is " + priceElem.ElementSchemaType);
//Compile the schema which validates the schema and
// if valid will place the PSCI values in certain properties.
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.ValidationEventHandler += ValidationCallbackOne;
schemaSet.Add(schema);
schemaSet.Compile();
foreach (XmlSchema compiledSchema in schemaSet.Schemas())
{
schema = compiledSchema;
}
// After compilation of the schema, the ElementSchemaType property of the
// XmlSchemaElement will contain a reference to a valid object because the
// SchemaTypeName referred to a valid type.
Console.WriteLine("After compilation the ElementSchemaType of Price is "
+ priceElem.ElementSchemaType);
}
private static void ValidationCallbackOne(object sender, ValidationEventArgs args)
{
Console.WriteLine(args.Message);
}
}
Imports System.Xml
Imports System.Xml.Schema
Public Class PsciSample
Public Shared Sub Main()
Dim schema As New XmlSchema()
' Create an element of type integer and add it to the schema.
Dim priceElem As New XmlSchemaElement()
priceElem.Name = "Price"
priceElem.SchemaTypeName = New XmlQualifiedName("integer", "http://www.w3.org/2001/XMLSchema")
schema.Items.Add(priceElem)
' Print the pre-compilation value of the ElementSchemaType property
' of the XmlSchemaElement which is a PSCI property.
Console.WriteLine("Before compilation the ElementSchemaType of Price is {0}", priceElem.ElementSchemaType)
' Compile the schema which validates the schema and
' if valid will place the PSCI values in certain properties.
Dim schemaSet As New XmlSchemaSet()
AddHandler schemaSet.ValidationEventHandler, AddressOf ValidationCallbackOne
schemaSet.Add(schema)
schemaSet.Compile()
For Each compiledSchema As XmlSchema In schemaSet.Schemas()
schema = compiledSchema
Next
' After compilation of the schema, the ElementSchemaType property of the
' XmlSchemaElement will contain a reference to a valid object because the
' SchemaTypeName referred to a valid type.
Console.WriteLine("After compilation the ElementSchemaType of Price is {0}", _
priceElem.ElementSchemaType)
End Sub
Private Shared Sub ValidationCallbackOne(ByVal sender As Object, ByVal args As ValidationEventArgs)
Console.WriteLine(args.Message)
End Sub
End Class