Прочитать на английском

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


XmlSchema Класс

Определение

Размещаемое в памяти представление схемы XML в соответствии со спецификациями Схема XML, часть 1. Структуры и Схема XML, часть 2. Типы данных консорциума W3C.

public class XmlSchema
public class XmlSchema : System.Xml.Schema.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);
    }
}

Следующий 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)
Является устаревшей.
Является устаревшей.
Является устаревшей.

Компилирует объектную модель схемы 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.

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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