XmlSchema Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Размещаемое в памяти представление схемы XML в соответствии со спецификациями Схема XML, часть 1. Структуры и Схема XML, часть 2. Типы данных консорциума W3C.
public ref class XmlSchema
public ref class XmlSchema : System::Xml::Schema::XmlSchemaObject
public class XmlSchema
public class XmlSchema : System.Xml.Schema.XmlSchemaObject
type XmlSchema = class
type XmlSchema = class
inherit XmlSchemaObject
Public Class XmlSchema
Public Class XmlSchema
Inherits XmlSchemaObject
- Наследование
-
XmlSchema
- Наследование
Примеры
В следующем примере создается определение схемы.
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
class XmlSchemaExamples
{
public:
static void Main()
{
XmlSchema^ schema = gcnew XmlSchema();
// <xs:element name="cat" type="xs:string"/>
XmlSchemaElement^ elementCat = gcnew XmlSchemaElement();
schema->Items->Add(elementCat);
elementCat->Name = "cat";
elementCat->SchemaTypeName = gcnew XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
// <xs:element name="dog" type="xs:string"/>
XmlSchemaElement^ elementDog = gcnew XmlSchemaElement();
schema->Items->Add(elementDog);
elementDog->Name = "dog";
elementDog->SchemaTypeName = gcnew XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
// <xs:element name="redDog" substitutionGroup="dog" />
XmlSchemaElement^ elementRedDog = gcnew XmlSchemaElement();
schema->Items->Add(elementRedDog);
elementRedDog->Name = "redDog";
elementRedDog->SubstitutionGroup = gcnew XmlQualifiedName("dog");
// <xs:element name="brownDog" substitutionGroup ="dog" />
XmlSchemaElement^ elementBrownDog = gcnew XmlSchemaElement();
schema->Items->Add(elementBrownDog);
elementBrownDog->Name = "brownDog";
elementBrownDog->SubstitutionGroup = gcnew XmlQualifiedName("dog");
// <xs:element name="pets">
XmlSchemaElement^ elementPets = gcnew XmlSchemaElement();
schema->Items->Add(elementPets);
elementPets->Name = "pets";
// <xs:complexType>
XmlSchemaComplexType^ complexType = gcnew XmlSchemaComplexType();
elementPets->SchemaType = complexType;
// <xs:choice minOccurs="0" maxOccurs="unbounded">
XmlSchemaChoice^ choice = gcnew XmlSchemaChoice();
complexType->Particle = choice;
choice->MinOccurs = 0;
choice->MaxOccursString = "unbounded";
// <xs:element ref="cat"/>
XmlSchemaElement^ catRef = gcnew XmlSchemaElement();
choice->Items->Add(catRef);
catRef->RefName = gcnew XmlQualifiedName("cat");
// <xs:element ref="dog"/>
XmlSchemaElement^ dogRef = gcnew XmlSchemaElement();
choice->Items->Add(dogRef);
dogRef->RefName = gcnew XmlQualifiedName("dog");
XmlSchemaSet^ schemaSet = gcnew XmlSchemaSet();
schemaSet->ValidationEventHandler += gcnew ValidationEventHandler(ValidationCallbackOne);
schemaSet->Add(schema);
schemaSet->Compile();
XmlSchema^ compiledSchema;
for each (XmlSchema^ schema1 in schemaSet->Schemas())
{
compiledSchema = schema1;
}
XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager(gcnew NameTable());
nsmgr->AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
compiledSchema->Write(Console::Out, nsmgr);
}
static void ValidationCallbackOne(Object^ sender, ValidationEventArgs^ args)
{
Console::WriteLine(args->Message);
}
};
int main()
{
XmlSchemaExamples::Main();
return 0;
};
using System;
using System.Xml;
using System.Xml.Schema;
class XMLSchemaExamples
{
public static void Main()
{
XmlSchema schema = new XmlSchema();
// <xs:element name="cat" type="xs:string"/>
XmlSchemaElement elementCat = new XmlSchemaElement();
schema.Items.Add(elementCat);
elementCat.Name = "cat";
elementCat.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
// <xs:element name="dog" type="xs:string"/>
XmlSchemaElement elementDog = new XmlSchemaElement();
schema.Items.Add(elementDog);
elementDog.Name = "dog";
elementDog.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
// <xs:element name="redDog" substitutionGroup="dog" />
XmlSchemaElement elementRedDog = new XmlSchemaElement();
schema.Items.Add(elementRedDog);
elementRedDog.Name = "redDog";
elementRedDog.SubstitutionGroup = new XmlQualifiedName("dog");
// <xs:element name="brownDog" substitutionGroup ="dog" />
XmlSchemaElement elementBrownDog = new XmlSchemaElement();
schema.Items.Add(elementBrownDog);
elementBrownDog.Name = "brownDog";
elementBrownDog.SubstitutionGroup = new XmlQualifiedName("dog");
// <xs:element name="pets">
XmlSchemaElement elementPets = new XmlSchemaElement();
schema.Items.Add(elementPets);
elementPets.Name = "pets";
// <xs:complexType>
XmlSchemaComplexType complexType = new XmlSchemaComplexType();
elementPets.SchemaType = complexType;
// <xs:choice minOccurs="0" maxOccurs="unbounded">
XmlSchemaChoice choice = new XmlSchemaChoice();
complexType.Particle = choice;
choice.MinOccurs = 0;
choice.MaxOccursString = "unbounded";
// <xs:element ref="cat"/>
XmlSchemaElement catRef = new XmlSchemaElement();
choice.Items.Add(catRef);
catRef.RefName = new XmlQualifiedName("cat");
// <xs:element ref="dog"/>
XmlSchemaElement dogRef = new XmlSchemaElement();
choice.Items.Add(dogRef);
dogRef.RefName = new XmlQualifiedName("dog");
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallbackOne);
schemaSet.Add(schema);
schemaSet.Compile();
XmlSchema compiledSchema = null;
foreach (XmlSchema schema1 in schemaSet.Schemas())
{
compiledSchema = schema1;
}
XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
compiledSchema.Write(Console.Out, nsmgr);
}
public static void ValidationCallbackOne(object sender, ValidationEventArgs args)
{
Console.WriteLine(args.Message);
}
}
Option Explicit On
Option Strict On
Imports System.Xml
Imports System.Xml.Schema
Class XMLSchemaExamples
Public Shared Sub Main()
Dim schema As New XmlSchema()
' <xs:element name="cat" type="xs:string"/>
Dim elementCat As New XmlSchemaElement()
schema.Items.Add(elementCat)
elementCat.Name = "cat"
elementCat.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
' <xs:element name="dog" type="xs:string"/>
Dim elementDog As New XmlSchemaElement()
schema.Items.Add(elementDog)
elementDog.Name = "dog"
elementDog.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
' <xs:element name="redDog" substitutionGroup="dog" />
Dim elementRedDog As New XmlSchemaElement()
schema.Items.Add(elementRedDog)
elementRedDog.Name = "redDog"
elementRedDog.SubstitutionGroup = New XmlQualifiedName("dog")
' <xs:element name="brownDog" substitutionGroup ="dog" />
Dim elementBrownDog As New XmlSchemaElement()
schema.Items.Add(elementBrownDog)
elementBrownDog.Name = "brownDog"
elementBrownDog.SubstitutionGroup = New XmlQualifiedName("dog")
' <xs:element name="pets">
Dim elementPets As New XmlSchemaElement()
schema.Items.Add(elementPets)
elementPets.Name = "pets"
' <xs:complexType>
Dim complexType As New XmlSchemaComplexType()
elementPets.SchemaType = complexType
' <xs:choice minOccurs="0" maxOccurs="unbounded">
Dim choice As New XmlSchemaChoice()
complexType.Particle = choice
choice.MinOccurs = 0
choice.MaxOccursString = "unbounded"
' <xs:element ref="cat"/>
Dim catRef As New XmlSchemaElement()
choice.Items.Add(catRef)
catRef.RefName = New XmlQualifiedName("cat")
' <xs:element ref="dog"/>
Dim dogRef As New XmlSchemaElement()
choice.Items.Add(dogRef)
dogRef.RefName = New XmlQualifiedName("dog")
Dim schemaSet As New XmlSchemaSet()
AddHandler schemaSet.ValidationEventHandler, AddressOf ValidationCallbackOne
schemaSet.Add(schema)
schemaSet.Compile()
Dim compiledSchema As XmlSchema = Nothing
For Each schema1 As XmlSchema In schemaSet.Schemas()
compiledSchema = schema1
Next
Dim nsmgr As New XmlNamespaceManager(New NameTable())
nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema")
compiledSchema.Write(Console.Out, nsmgr)
End Sub
Public Shared Sub ValidationCallbackOne(ByVal sender As Object, ByVal args As ValidationEventArgs)
Console.WriteLine(args.Message)
End Sub
End Class
Следующий XML-файл создается для предыдущего примера кода.
<?xml version="1.0" encoding="IBM437"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="cat" type="xs:string"/>
<xs:element name="dog" type="xs:string"/>
<xs:element name="redDog" type="xs:string" substitutionGroup="dog"/>
<xs:element name="brownDog" type="xs:string" substitutionGroup ="dog" />
<xs:element name="pets">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="cat"/>
<xs:element ref="dog"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Комментарии
Важно!
- Не используйте схемы из неизвестных или ненадежных источников или расположений. Это приведет к компрометации безопасности кода.
- XML-схемы (включая встроенные схемы) по своей сути уязвимы к атакам типа "отказ в обслуживании"; не принимать их в недоверенных сценариях.
- Исключения, возникающие в результате использования XmlSchema класса, например XmlSchemaException класса, могут содержать конфиденциальную информацию, которая не должна предоставляться в ненадежных сценариях. Например, SourceUri свойство возвращает XmlSchemaException путь URI к файлу схемы, вызвавшего исключение. Свойство SourceUri не должно предоставляться в ненадежных сценариях. Исключения должны обрабатываться должным образом, чтобы эта конфиденциальная информация не предоставлялась в ненадежных сценариях.
Конструкторы
XmlSchema() |
Инициализирует новый экземпляр класса XmlSchema. |
Поля
InstanceNamespace |
Пространство имен экземпляра схемы XML. Это поле является константой. |
Namespace |
Пространство имен схемы XML. Это поле является константой. |
Свойства
AttributeFormDefault |
Возвращает или задает форму для атрибутов, объявленных в целевом пространстве имен схемы. |
AttributeGroups |
Возвращает значение после компиляции схемы из всех глобальных групп атрибутов в схеме. |
Attributes |
Возвращает значение после компиляции схемы, состоящее из всех атрибутов схемы. |
BlockDefault |
Возвращает или задает атрибут |
ElementFormDefault |
Возвращает или задает форму для элементов, объявленных в целевом пространстве имен схемы. |
Elements |
Возвращает значение после компиляции схемы, состоящее из всех элементов схемы. |
FinalDefault |
Возвращает или задает атрибут |
Groups |
Возвращает значение после компиляции схемы, состоящее из всех групп схемы. |
Id |
Возвращает или задает идентификатор строки. |
Includes |
Возвращает коллекцию включаемых и импортируемых схем. |
IsCompiled |
Указывает, была ли скомпилирована схема. |
Items |
Получает коллекцию элементов схемы из схемы, а также используется для добавления новых типов элементов на уровне элементов |
LineNumber |
Получает или задает номер строки в файле, на которую ссылается элемент |
LinePosition |
Получает или задает позицию в строке файла, на которую ссылается элемент |
Namespaces |
Получает или задает XmlSerializerNamespaces для использования с данным объектом схемы. (Унаследовано от XmlSchemaObject) |
Notations |
Возвращает значение после компиляции схемы, состоящее из всех нотаций схемы. |
Parent |
Получает или задает родительский элемент данного XmlSchemaObject. (Унаследовано от XmlSchemaObject) |
SchemaTypes |
Возвращает после компиляции схемы значение, состоящее из всех типов схемы. |
SourceUri |
Получает или задает исходного расположение для файла, загрузившего данную схему. (Унаследовано от XmlSchemaObject) |
TargetNamespace |
Возвращает или задает URI целевого пространства имен схемы. |
UnhandledAttributes |
Получает или задает полные атрибуты, не принадлежащие целевому пространству имен схемы. |
Version |
Возвращает или задает версию схемы. |
Методы
Compile(ValidationEventHandler) |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Компилирует объектную модель схемы XML (SOM — Schema Object Model) в сведения о схеме для проверки. Используется для проверки синтаксической и семантической структуры программно реализованной модели SOM. Семантическая проверка допустимости выполняется во время компиляции. |
Compile(ValidationEventHandler, XmlResolver) |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Компилирует объектную модель схемы XML (SOM — Schema Object Model) в сведения о схеме для проверки. Используется для проверки синтаксической и семантической структуры программно реализованной модели SOM. Семантическая проверка допустимости выполняется во время компиляции. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
Read(Stream, ValidationEventHandler) |
Считывает XML-схему из предоставленного потока. |
Read(TextReader, ValidationEventHandler) |
Считывает схему XML из предоставленного объекта TextReader. |
Read(XmlReader, ValidationEventHandler) |
Считывает схему XML из предоставленного объекта XmlReader. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Write(Stream) |
Записывает схему XML в указанный поток данных. |
Write(Stream, XmlNamespaceManager) |
Выводит схему XML в предоставленный поток Stream с помощью указанного XmlNamespaceManager. |
Write(TextWriter) |
Записывает схему XML в предоставленный объект TextWriter. |
Write(TextWriter, XmlNamespaceManager) |
Записывает схему XML в предоставленный объект TextWriter. |
Write(XmlWriter) |
Записывает схему XML в предоставленный объект XmlWriter. |
Write(XmlWriter, XmlNamespaceManager) |
Записывает схему XML в предоставленный объект XmlWriter. |