Compartir a través de


Conjunto de información posterior a la validación de esquema (PSVI)

En la recomendación de XML Schema del W3C (World Wide Web Consortium), se describe el conjunto de información (infoset) que se debe exponer antes y después de la validación del esquema. SOM (Schema Object Model, Modelo de objetos de esquemas) considera la exposición antes y después de la llamada al método Compile.

El conjunto de información anterior a la validación de esquema se crea durante la edición del esquema. El conjunto de información posterior a la validación se genera después de llamar al método Compile, durante la compilación del esquema, y se expone en forma de propiedades.

SOM es el modelo de objetos que representa los conjuntos de información anterior y posterior a la validación de esquema. Todas las propiedades que tienen métodos de lectura y de escritura pertenecen al conjunto de información anterior a la validación de esquema, mientras que todas las propiedades de sólo lectura pertenecen al conjunto de información posterior a la validación de esquema.

Por ejemplo, las clases XmlSchemaElement y XmlSchemaComplexType tienen propiedades BlockResolved y FinalResolved. Estas propiedades se utilizan para contener los valores de las propiedades Block y Final después de compilar y validar el esquema. BlockResolved y FinalResolved son propiedades de sólo lectura que forman parte del conjunto de información posterior a la validación de esquema.

En el ejemplo siguiente se muestra la propiedad ElementType de la clase XmlSchemaElement establecida después de validar el esquema. Antes de la validación, la propiedad contiene una referencia nula y el nombre del tipo en cuestión se establece como valor de SchemaTypeName. Después de la validación, SchemaTypeName se resuelve en un tipo válido y el objeto de tipo está disponible mediante la propiedad ElementType.

Imports System.Xml
Imports System.Xml.Schema
Imports System.IO
Imports System

Public Class PsviSample
    
   Public Shared Sub ValidationCallbackOne(sender As Object, args As ValidationEventArgs)
      Console.WriteLine(args.Message)
   End Sub 'ValidationCallbackOne

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 ElementType property 
'   of the XmlSchemaElement which is a PSVI variable.
'     
      'Console.WriteLine("Before compilation the ElementType of Price is " + priceElem.ElementType)
      Console.Write("Before compilation the ElementType of Price is ")
      Console.WriteLine(priceElem.ElementType)
      

' Compile, which validates the schema and, if valid, will place the PSVI 
' values in certain properties.
'      
      schema.Compile(AddressOf ValidationCallbackOne)
      

' After compilation of the schema, the ElementType property of the 
' XmlSchemaElement will contain a reference to a valid object 
' because the ' SchemaTypeName refered to a valid type.
'      
   'Console.WriteLine("After compilation the ElementType of Price is " + priceElem.ElementType)
      Console.Write("After compilation the ElementType of Price is ")
      Console.WriteLine(priceElem.ElementType)
   End Sub ' Main
   
End Class   
' PsviSample
[C#]
using System.Xml; 
using System.Xml.Schema; 
using System.IO;
using System;

public class PsviSample {

    public static void ValidationCallbackOne(object sender, ValidationEventArgs args) {
   Console.WriteLine(args.Message);
    }

    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 ElementType property 
    of the XmlSchemaElement which is a PSVI variable.
      */
      Console.WriteLine("Before compilation the ElementType of Price is " + priceElem.ElementType );
      
      /* 
    Compile, which validates the schema and, if valid, will place the PSVI 
    values in certain properties. 
      */
      schema.Compile(new ValidationEventHandler(ValidationCallbackOne)); 
      
      /* 
After compilation of the schema, the ElementType property of the 
XmlSchemaElement will contain a reference to a valid object because the 
SchemaTypeName refered to a valid type.
      */ 
      Console.WriteLine("After compilation the ElementType of Price is " 
      + priceElem.ElementType );

    }/* Main(string[]) */

}// PsviSample

Vea también

Modelo de objetos de esquemas XML (SOM)