Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die XML-Schemaempfehlung (World Wide Web Consortium, W3C) erläutert den Informationssatz (Infoset), der für die Vorabschemaüberprüfung und die Nachschemakompilierung verfügbar gemacht werden muss. Das XML-Schemaobjektmodell (SOM) betrachtet diese Offenlegung vor und nach dem Aufruf der Compile-Methode des XmlSchemaSet.
Das Infoset für die Vorabschemaüberprüfung wird während der Bearbeitung des Schemas erstellt. Das Infoset nach der Schemakompilierung wird generiert, nachdem die Compile Methode der XmlSchemaSet aufgerufen wurde, bei der Kompilierung des Schemas und wird als Eigenschaften zur Verfügung gestellt.
Das SOM ist das Objektmodell, das die Infosets für die Vorabschemaüberprüfung und die Kompilierung nach dem Schema darstellt. sie besteht aus den Klassen im System.Xml.Schema Namespace. Alle Lese- und Schreibeigenschaften von Klassen im System.Xml.Schema Namespace gehören zum Vor-Schema-Validierungs-Infoset, während alle schreibgeschützten Eigenschaften von Klassen im System.Xml.Schema Namespace zum Nach-Schema-Kompilierungs-Infoset gehören. Die Ausnahme von dieser Regel sind die folgenden Eigenschaften, die sowohl Eigenschaften des Infosets der Voraus-Schema-Validierung als auch des Post-Schema-Kompilierungs-Infosets sind.
Beispielsweise haben sowohl die Klassen XmlSchemaElement als auch XmlSchemaComplexType die Eigenschaften BlockResolved und FinalResolved. Diese Eigenschaften werden verwendet, um die Werte der Eigenschaften Block und Final zu speichern, nachdem das Schema kompiliert und überprüft wurde.
BlockResolved und FinalResolved sind schreibgeschützte Eigenschaften, die Teil des post-schema Kompilierungs-Infosets sind.
Das folgende Beispiel zeigt die ElementSchemaType Eigenschaft des XmlSchemaElement Klassensatzes nach der Überprüfung des Schemas. Vor der Überprüfung enthält die Eigenschaft einen null-Verweis, und SchemaTypeName wird auf den Namen des betreffenden Typs festgelegt. Nach der Überprüfung wird das SchemaTypeName Element auf einen gültigen Typ aufgelöst, und das Typobjekt ist über die ElementSchemaType Eigenschaft verfügbar.
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