XmlSchemaSet.Add Метод

Определение

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

Перегрузки

Имя Описание
Add(XmlSchema)

Добавляет заданный XmlSchemaXmlSchemaSetобъект.

Add(XmlSchemaSet)

Добавляет все схемы языка определения XML-схемы (XSD) в заданный объект XmlSchemaSetXmlSchemaSet.

Add(String, String)

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

Add(String, XmlReader)

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

Add(XmlSchema)

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

Добавляет заданный XmlSchemaXmlSchemaSetобъект.

public:
 System::Xml::Schema::XmlSchema ^ Add(System::Xml::Schema::XmlSchema ^ schema);
public System.Xml.Schema.XmlSchema? Add(System.Xml.Schema.XmlSchema schema);
public System.Xml.Schema.XmlSchema Add(System.Xml.Schema.XmlSchema schema);
member this.Add : System.Xml.Schema.XmlSchema -> System.Xml.Schema.XmlSchema
Public Function Add (schema As XmlSchema) As XmlSchema

Параметры

schema
XmlSchema

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

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

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

Исключения

Недействительная схема.

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

Комментарии

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

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

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

Add(XmlSchemaSet)

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

Добавляет все схемы языка определения XML-схемы (XSD) в заданный объект XmlSchemaSetXmlSchemaSet.

public:
 void Add(System::Xml::Schema::XmlSchemaSet ^ schemas);
public void Add(System.Xml.Schema.XmlSchemaSet schemas);
member this.Add : System.Xml.Schema.XmlSchemaSet -> unit
Public Sub Add (schemas As XmlSchemaSet)

Параметры

schemas
XmlSchemaSet

Объект XmlSchemaSet.

Исключения

Недопустимая XmlSchemaSet схема.

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

Примеры

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

Dim schemaSet1 As XmlSchemaSet = 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")

Dim schemaSet2 As XmlSchemaSet = New XmlSchemaSet
schemaSet2.Add(schemaSet1)
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. Схема проверяется на наличие структурной действительности в соответствии с правилами XML-схемы W3C, но схема не полностью проверена.

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

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

' First example
schemaSet.Add(schemaSet1)

' Second example
Dim schema As XmlSchema

For Each schema in schemaSet.Schemas()

    schemaSet.Add(schema)

Next
// First example
schemaSet.Add(schemaSet1);

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

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

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

Add(String, String)

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

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

public:
 System::Xml::Schema::XmlSchema ^ Add(System::String ^ targetNamespace, System::String ^ schemaUri);
public System.Xml.Schema.XmlSchema? Add(string? targetNamespace, string schemaUri);
public System.Xml.Schema.XmlSchema Add(string targetNamespace, string schemaUri);
member this.Add : string * string -> System.Xml.Schema.XmlSchema
Public Function Add (targetNamespace As String, schemaUri As String) As XmlSchema

Параметры

targetNamespace
String

Свойство схемы targetNamespace или null использование указанного targetNamespace в схеме.

schemaUri
String

URL-адрес, указывающий схему для загрузки.

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

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

Исключения

Недействительная схема.

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

Примеры

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

Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd")
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd");

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

<?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. Схема проверяется на наличие структурной действительности в соответствии с правилами XML-схемы W3C, но схема не полностью проверена.

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

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

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

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

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

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

    Замечание

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

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

Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
schemaSet.Add(Nothing, "books.xsd")

Dim schema As XmlSchema
For Each schema In schemaSet.Schemas("http://www.contoso.com/books")
    schema.Write(Console.Out)
Next
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 методом, как показано в следующем примере.
<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.

Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
schemaSet.Add("http://www.contoso.com/new/targetnamespace", "http://www.contoso.com/targetnamespace.xsd")

Dim schema As XmlSchema

For Each schema in schemaSet.Schemas()

    Console.WriteLine(schema.TargetNamespace)

Next
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);
}

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

Add(String, XmlReader)

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

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

public:
 System::Xml::Schema::XmlSchema ^ Add(System::String ^ targetNamespace, System::Xml::XmlReader ^ schemaDocument);
public System.Xml.Schema.XmlSchema? Add(string? targetNamespace, System.Xml.XmlReader schemaDocument);
public System.Xml.Schema.XmlSchema Add(string targetNamespace, System.Xml.XmlReader schemaDocument);
member this.Add : string * System.Xml.XmlReader -> System.Xml.Schema.XmlSchema
Public Function Add (targetNamespace As String, schemaDocument As XmlReader) As XmlSchema

Параметры

targetNamespace
String

Свойство схемы targetNamespace или null использование указанного targetNamespace в схеме.

schemaDocument
XmlReader

Объект XmlReader.

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

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

Исключения

Недействительная схема.

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

Примеры

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

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

Комментарии

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

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

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

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

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

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

  • Если последовательность XmlReader XML-узлов размещается последовательность, добавляется только первый узел в последовательности.

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

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

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

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

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