Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La recomendación del esquema XML de World Wide Web Consortium (W3C) describe el conjunto de información (infoset) que se debe exponer para la validación previa al esquema y la compilación posterior al esquema. El modelo de objetos del esquema XML (SOM) observa esta exposición antes y después de que se llame al método Compile del XmlSchemaSet.
El conjunto de información de validación anterior al esquema se crea durante la edición del esquema. El conjunto de información posterior a la compilación del esquema se genera después de llamar al Compile método de , XmlSchemaSet durante la compilación del esquema y se expone como propiedades.
El SOM es el modelo de objetos que representa los conjuntos de información antes de la validación de esquemas y después de la compilación de esquemas; consta de las clases del espacio de nombres System.Xml.Schema. Todas las propiedades de lectura y escritura de las clases del System.Xml.Schema espacio de nombres pertenecen al conjunto de información de validación de esquema previo, mientras que todas las propiedades de solo lectura de las clases del System.Xml.Schema espacio de nombres pertenecen al conjunto de información de compilación posterior al esquema. La excepción a esta regla son las siguientes propiedades, que son el conjunto de información de validación anterior al esquema y las propiedades del conjunto de información de compilación posterior al esquema.
Por ejemplo, las XmlSchemaElement clases y XmlSchemaComplexType tienen BlockResolved
propiedades y FinalResolved
. Estas propiedades se usan para contener los valores de las Block
propiedades y Final
una vez compilado y validado el esquema.
BlockResolved
y FinalResolved
son propiedades de solo lectura que forman parte del conjunto de información de compilación posterior al esquema.
En el ejemplo siguiente se muestra la propiedad ElementSchemaType de la clase XmlSchemaElement después de validar el esquema. Antes de la validación, la propiedad contiene una null
referencia y SchemaTypeName se establece en el nombre del tipo en cuestión. Después de la validación, SchemaTypeName se resuelve en un tipo válido y el objeto de tipo está disponible a través de la ElementSchemaType propiedad .
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