Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Рекомендация по схеме XML World Wide Web Consortium (W3C) описывает набор сведений (infoset), который должен быть предоставлен для предварительной проверки схемы и компиляции после схемы. Объектная модель XML-схемы (SOM) просматривает эту экспозицию до и после Compile вызова метода XmlSchemaSet .
Во время редактирования схемы создается набор сведений о проверке предварительной схемы. Набор сведений о компиляции после схемы создается после Compile вызова метода XmlSchemaSet во время компиляции схемы и предоставляется в виде свойств.
SOM — это объектная модель, представляющая наборы сведений о компиляции предварительной схемы и после схемы; он состоит из классов в System.Xml.Schema пространстве имен. Все свойства классов чтения и записи в System.Xml.Schema пространстве имен относятся к набору сведений о проверке предварительной схемы, а все свойства классов, доступных только для чтения в System.Xml.Schema пространстве имен, относятся к набору сведений о компиляции после схемы. Исключением из этого правила являются следующие свойства, которые являются как набором сведений о предварительной проверке схемы, так и свойствами набора сведений о компиляции после схемы.
Например, классы XmlSchemaElement имеют XmlSchemaComplexType и BlockResolved
FinalResolved
свойства. Эти свойства используются для хранения значений и Block
Final
свойств после компиляции и проверки схемы.
BlockResolved
и FinalResolved
являются свойствами только для чтения, которые являются частью набора сведений о компиляции после схемы.
В следующем примере показано ElementSchemaType свойство XmlSchemaElement набора классов после проверки схемы. Перед проверкой null
свойство содержит ссылку, а SchemaTypeName для свойства задано имя заданного типа. После проверки SchemaTypeName разрешается допустимый тип, а объект типа доступен через ElementSchemaType свойство.
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