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

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


XmlSchemaSet.Add Метод

Определение

Добавляет заданную схему языка определения схем XML (XSD) в XmlSchemaSet.

Перегрузки

Add(XmlSchema)

Добавляет указанную XmlSchema в XmlSchemaSet.

Add(XmlSchemaSet)

Добавляет все схемы языка определения схем XML (XSD), содержащиеся в заданном XmlSchemaSet, в XmlSchemaSet.

Add(String, String)

Добавляет схему языка определения схем XML (XSD), расположенную по указанному URL-адресу, в XmlSchemaSet.

Add(String, XmlReader)

Добавляет схему языка определения схем XML (XSD), содержащуюся в XmlReader, в XmlSchemaSet.

Add(XmlSchema)

Исходный код:
XmlSchemaSet.cs
Исходный код:
XmlSchemaSet.cs
Исходный код:
XmlSchemaSet.cs

Добавляет указанную XmlSchema в XmlSchemaSet.

C#
public System.Xml.Schema.XmlSchema? Add(System.Xml.Schema.XmlSchema schema);
C#
public System.Xml.Schema.XmlSchema Add(System.Xml.Schema.XmlSchema schema);

Параметры

schema
XmlSchema

Объект XmlSchema, добавляемый в коллекцию XmlSchemaSet.

Возвращаемое значение

Объект XmlSchema, если схема успешно прошла проверку. Если схема не прошла проверку и задан ValidationEventHandler, тогда возвращается null и возникает соответствующее событие проверки. В противном случае возникает исключение XmlSchemaException.

Исключения

Схема не прошла проверку.

Объект XmlSchema, переданный в качестве параметра, является null.

Комментарии

XmlSchema Если объект уже существует в XmlSchemaSet, Add метод ничего не делает.

Функциональные возможности этого метода идентичны Add функциям метода .

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

.NET 10 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 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, 4.8.1
.NET Standard 2.0, 2.1

Add(XmlSchemaSet)

Исходный код:
XmlSchemaSet.cs
Исходный код:
XmlSchemaSet.cs
Исходный код:
XmlSchemaSet.cs

Добавляет все схемы языка определения схем XML (XSD), содержащиеся в заданном XmlSchemaSet, в XmlSchemaSet.

C#
public void Add(System.Xml.Schema.XmlSchemaSet schemas);

Параметры

schemas
XmlSchemaSet

Объект XmlSchemaSet.

Исключения

Схема в XmlSchemaSet недействительна.

Объект XmlSchemaSet, переданный в качестве параметра, является null.

Примеры

В следующем примере кода показано добавление схем в XmlSchemaSet, а затем добавление в XmlSchemaSet новый XmlSchemaSet с помощью Add метода .

C#
XmlSchemaSet schemaSet1 = new XmlSchemaSet();
schemaSet1.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd");
schemaSet1.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd");
schemaSet1.Add("http://www.contoso.com/music", "http://www.contoso.com/music.xsd");

XmlSchemaSet schemaSet2 = new XmlSchemaSet();
schemaSet2.Add(schemaSet1);

Комментарии

Прежде чем можно будет добавить схему в XmlSchemaSet, она должна быть успешно обработана. Предварительная обработка выполняет следующие основные задачи.

  1. Схема проверяется на структурную достоверность в соответствии с правилами схемы W3C XML, но схема не полностью проверена.

  2. Ссылки на внутренние и внешние компоненты схемы разрешаются. Все импортированные или включенные схемы, которые успешно получены, также добавляются в XmlSchemaSet. Импортированные схемы добавляются в виде отдельных XmlSchema объектов, а включенные схемы являются частью включающего XmlSchema.

IsCompiled Если свойство добавляемого XmlSchemaSet объекта равно true, все схемы в добавляемом XmlSchemaSet объекте добавляются в XmlSchemaSet. IsCompiled Если свойство добавляемого XmlSchemaSet объекта имеет значение false, каждая добавленная схема предварительно обрабатывается перед добавлением. Если какая-либо из схем в добавленном XmlSchemaSet объекте не может быть предварительно обработана, схемы не добавляются; вместо этого создается исключение XmlSchemaException . В результате приведенные ниже два примера кода не эквивалентны.

C#
// First example
schemaSet.Add(schemaSet1);

// Second example
foreach(XmlSchema schema in schemaSet.Schemas())
{
    schemaSet.Add(schema);
}

Предыдущие два примера кода не эквивалентны. В первом примере, если в schemaSet1 существует недопустимая схема и ее IsCompiled свойству falseприсвоено значение , схемы не добавляются в schemaSet. Во втором примере несколько схем можно добавить в schemaSet , прежде чем обнаруживается недопустимая схема и возникает исключение.

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

.NET 10 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 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, 4.8.1
.NET Standard 2.0, 2.1

Add(String, String)

Исходный код:
XmlSchemaSet.cs
Исходный код:
XmlSchemaSet.cs
Исходный код:
XmlSchemaSet.cs

Добавляет схему языка определения схем XML (XSD), расположенную по указанному URL-адресу, в XmlSchemaSet.

C#
public System.Xml.Schema.XmlSchema? Add(string? targetNamespace, string schemaUri);
C#
public System.Xml.Schema.XmlSchema Add(string targetNamespace, string schemaUri);

Параметры

targetNamespace
String

Свойство схемы targetNamespace или null, чтобы использовалось пространство имен targetNamespace, определенное в схеме.

schemaUri
String

URL-адрес, ссылающийся на схему, которую необходимо загрузить.

Возвращаемое значение

Объект XmlSchema, если схема успешно прошла проверку. Если схема не прошла проверку и задан ValidationEventHandler, тогда возвращается null и возникает соответствующее событие проверки. В противном случае возникает исключение XmlSchemaException.

Исключения

Схема не прошла проверку.

URL-адрес, переданный в качестве параметра, равен null или Empty.

Примеры

В следующем примере кода схема с целевым пространством http://www.contoso.com/books имен добавляется http://www.contoso.com/books.xsd в XmlSchemaSet.

C#
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd");

В примере в качестве входных данных используется файл books.xsd.

XML
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="bookstore">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="book">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="name" type="xs:string" />
                                        <xs:element minOccurs="0" name="first-name" type="xs:string" />
                                        <xs:element minOccurs="0" name="last-name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="price" type="xs:decimal" />
                        </xs:sequence>
                        <xs:attribute name="genre" type="xs:string" use="required" />
                        <xs:attribute name="publicationdate" type="xs:unsignedShort" use="required" />
                        <xs:attribute name="ISBN" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Комментарии

Прежде чем можно будет добавить схему в XmlSchemaSet, она должна быть успешно обработана. Предварительная обработка выполняет следующие основные задачи.

  1. Схема проверяется на структурную достоверность в соответствии с правилами схемы W3C XML, но схема не полностью проверена.

  2. Ссылки на внутренние и внешние компоненты схемы разрешаются. Все импортированные или включенные схемы, которые успешно получены, также добавляются в XmlSchemaSet. Импортированные схемы добавляются в виде отдельных XmlSchema объектов, а включенные схемы являются частью включающего XmlSchema.

Ниже приведены важные примечания, которые следует учитывать при использовании Add метода .

  • Добавление схемы в объект XmlSchemaSet с тем же целевым пространством имен и URL-адресом расположения схемы, что и схема, уже содержащаяся в XmlSchemaSet , вернет исходный объект схемы.

  • При успешном добавлении новой схемы в XmlSchemaSetIsCompiled свойство XmlSchemaSet задается значение false.

  • Все элементы включения или импорта, встречающиеся в XML-схеме, разрешаются при вызове Add метода . Сбой при разрешении элементов включения и импорта приводит к предупреждению о проверке схемы, и если для XmlSchemaSet объекта не ValidationEventHandler указано, это предупреждение не будет сообщено.

  • Если схема с тем же целевым пространством имен, что и схема, которая уже существует в , добавляется в XmlSchemaSetXmlSchemaSet, добавляются обе схемы.

    Примечание

    Это поведение отличается от устаревшего XmlSchemaCollection объекта.

  • Метод AddXmlSchemaSet объекта имеет возможность использовать целевое пространство имен, определенное в схеме, а не требовать, чтобы целевое пространство имен указывалось в качестве параметра при вызове Add метода. Указание null в параметре targetNamespaceAdd метода указывает XmlSchemaSet , что следует использовать целевое пространство имен, определенное в схеме, как показано в следующем примере кода.

C#
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add(null, "books.xsd");

foreach(XmlSchema schema in schemaSet.Schemas("http://www.contoso.com/books"))
{
    schema.Write(Console.Out);
}

В приведенном выше null примере кода указывается в targetNamespace качестве параметра метода Add . В результате используется targetNamespace объект , определенный в файле books.xml. В этом случае результат вызова метода будет идентичным Add , если http://www.contoso.com/books бы он был указан в targetNamespace качестве параметра .

  • Xml-схема W3C позволяет включать схемы без целевого пространства имен в схемы с определенным целевым пространством имен. В этом случае схема без определенного целевого пространства имен принудается к целевому пространству имен включаемой схемы. Включенная схема обрабатывается так, как если бы в ней было определено целевое пространство имен. Аналогичным образом схемы без целевого пространства имен можно добавить в XmlSchemaSet и принудить к целевому пространству имен, указанному Add методом , как показано в следующем примере.
XML
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="A" type="xs:string" />
</xs:schema>

Если приведенная выше схема добавляется XmlSchemaSet в с целевым пространством http://www.contoso.com/new/targetnamespace имен (как показано в приведенном ниже коде), она обрабатывается так, как если бы целевое пространство имен, объявленное в схеме, было http://www.contoso.com/new/targetnamespace.

C#
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add("http://www.contoso.com/new/targetnamespace", "http://www.contoso.com/targetnamespace.xsd");
foreach(XmlSchema schema in schemaSet.Schemas())
{
    Console.WriteLine(schema.TargetNamespace);
}

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

.NET 10 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 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, 4.8.1
.NET Standard 2.0, 2.1

Add(String, XmlReader)

Исходный код:
XmlSchemaSet.cs
Исходный код:
XmlSchemaSet.cs
Исходный код:
XmlSchemaSet.cs

Добавляет схему языка определения схем XML (XSD), содержащуюся в XmlReader, в XmlSchemaSet.

C#
public System.Xml.Schema.XmlSchema? Add(string? targetNamespace, System.Xml.XmlReader schemaDocument);
C#
public System.Xml.Schema.XmlSchema Add(string targetNamespace, System.Xml.XmlReader schemaDocument);

Параметры

targetNamespace
String

Свойство схемы targetNamespace или null, чтобы использовалось пространство имен targetNamespace, определенное в схеме.

schemaDocument
XmlReader

Объект XmlReader.

Возвращаемое значение

Объект XmlSchema, если схема успешно прошла проверку. Если схема не прошла проверку и задан ValidationEventHandler, тогда возвращается null и возникает соответствующее событие проверки. В противном случае возникает исключение XmlSchemaException.

Исключения

Схема не прошла проверку.

Объект XmlReader, переданный в качестве параметра, является null.

Примеры

В следующем примере кода схема books.xsd, содержащаяся в , с целевым пространством имен добавляется в XmlTextReaderXmlSchemaSet.http://www.contoso.com/books

C#
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add("http://www.contoso.com/books", new XmlTextReader("books.xsd");

Комментарии

Прежде чем можно будет добавить схему в XmlSchemaSet, она должна быть успешно обработана. Предварительная обработка выполняет следующие основные задачи.

  1. Схема проверяется на структурную достоверность в соответствии с правилами схемы W3C XML, но схема не полностью проверена.

  2. Ссылки на внутренние и внешние компоненты схемы разрешаются. Все импортированные или включенные схемы, которые успешно получены, также добавляются в XmlSchemaSet. Импортированные схемы добавляются в виде отдельных XmlSchema объектов, а включенные схемы являются частью включающего XmlSchema.

Ниже приведены важные примечания, которые следует учитывать при использовании Add метода .

  • Успешно извлеченные схемы, импортированные или включенные в схемы, содержащиеся в XmlReader , также добавляются в XmlSchemaSet.

  • XmlReader Если объект не расположен в корневом элементе, создается исключение , XmlSchemaException если текущий элемент не является элементом . Если текущий элемент является элементом xs:schema , документ схемы считывается в ; в XmlSchemaSetпротивном случае создается исключение , XmlSchemaException так как схема недопустима.

  • XmlReader Если объект расположен над последовательностью УЗЛОВ XML, добавляется только первый узел в последовательности.

  • Если схема была создана из XmlReader.Create вызова метода, значение ProcessInlineSchema свойства игнорируется, так как встроенная обработка схемы не применяется к документам схемы W3C XML.

  • Свойство XmlResolverXmlReader объекта не используется для разрешения ссылок на пространства имен или расположения схемы во включаемых и импортируемых элементах. Вместо этого используется XmlResolver свойство объекта XmlSchemaSet .

  • Метод AddXmlSchemaSet объекта имеет возможность использовать целевое пространство имен, определенное в схеме, а не требовать, чтобы целевое пространство имен указывалось в качестве параметра при вызове Add метода. Указание null или String.EmptyAdd для метода указывает XmlSchemaSet , чтобы использовать целевое пространство имен, определенное в схеме. Пример такого поведения см. в методе Add .

Остальные функциональные возможности этого метода идентичны Add функциям метода .

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

.NET 10 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 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, 4.8.1
.NET Standard 2.0, 2.1