Поделиться через


XmlSchema Класс

Определение

Представление xml-схемы в памяти, указанное в xml-схеме W3C(W3C), часть 1. Структуры и XML-схема, часть 2: типы данных].

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 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

Возвращает или задает атрибут, который задает blockDefault значение атрибута block по умолчанию для элементов и сложных типов в targetNamespace схеме.

ElementFormDefault

Возвращает или задает форму для элементов, объявленных в целевом пространстве имен схемы.

Elements

Возвращает значение после компиляции схемы для всех элементов в схеме.

FinalDefault

Возвращает или задает атрибут, который задает finalDefault значение атрибута final по умолчанию для элементов и сложных типов в целевом пространстве имен схемы.

Groups

Возвращает значение после компиляции схемы всех групп в схеме.

Id

Возвращает или задает идентификатор строки.

Includes

Возвращает коллекцию включенных и импортированных схем.

IsCompiled

Указывает, компилируется ли схема.

Items

Возвращает коллекцию элементов схемы в схеме и используется для добавления новых типов элементов на schema уровне элемента.

LineNumber

Возвращает или задает номер строки в файле, к которому schema ссылается элемент.

(Унаследовано от XmlSchemaObject)
LinePosition

Получает или задает позицию строки в файле, к которому schema ссылается элемент.

(Унаследовано от XmlSchemaObject)
Namespaces

Возвращает или задает XmlSerializerNamespaces для использования с этим объектом схемы.

(Унаследовано от XmlSchemaObject)
Notations

Возвращает значение после компиляции схемы для всех нотации в схеме.

Parent

Возвращает или задает родительский элемент этого XmlSchemaObjectэлемента.

(Унаследовано от XmlSchemaObject)
SchemaTypes

Возвращает значение после компиляции схемы всех типов схем в схеме.

SourceUri

Возвращает или задает исходное расположение файла, загруженного схемой.

(Унаследовано от XmlSchemaObject)
TargetNamespace

Возвращает или задает универсальный идентификатор ресурса (URI) целевого пространства имен схемы.

UnhandledAttributes

Возвращает или задает квалифицированные атрибуты, которые не принадлежат целевому пространству имен схемы.

Version

Возвращает или задает версию схемы.

Методы

Имя Описание
Compile(ValidationEventHandler, XmlResolver)
Устаревшие..
Устаревшие..
Устаревшие..

Компилирует объектную модель XML-схемы (SOM) в сведения о схеме для проверки. Используется для проверки синтаксической и семантической структуры программно созданного SOM. Проверка семантики выполняется во время компиляции.

Compile(ValidationEventHandler)
Устаревшие..
Устаревшие..
Устаревшие..

Компилирует объектную модель XML-схемы (SOM) в сведения о схеме для проверки. Используется для проверки синтаксической и семантической структуры программно созданного 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, XmlNamespaceManager)

Записывает XML-схему в предоставленный Stream с помощью указанного XmlNamespaceManager .

Write(Stream)

Записывает XML-схему в предоставленный поток данных.

Write(TextWriter, XmlNamespaceManager)

Записывает XML-схему в предоставленный TextWriterобъект.

Write(TextWriter)

Записывает XML-схему в предоставленный TextWriterобъект.

Write(XmlWriter, XmlNamespaceManager)

Записывает XML-схему в предоставленный XmlWriterобъект.

Write(XmlWriter)

Записывает XML-схему в предоставленный XmlWriterобъект.

Применяется к

См. также раздел