XmlSchemaSet.Add XmlSchemaSet.Add XmlSchemaSet.Add XmlSchemaSet.Add Method

Определение

Добавляет заданную схему языка определения схем XML (XSD) в XmlSchemaSet.Adds the given XML Schema definition language (XSD) schema to the XmlSchemaSet.

Перегрузки

Add(XmlSchema) Add(XmlSchema) Add(XmlSchema) Add(XmlSchema)

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

Add(XmlSchemaSet) Add(XmlSchemaSet) Add(XmlSchemaSet) Add(XmlSchemaSet)

Добавляет все схемы языка определения схем XML (XSD), содержащиеся в заданном XmlSchemaSet, в XmlSchemaSet.Adds all the XML Schema definition language (XSD) schemas in the given XmlSchemaSet to the XmlSchemaSet.

Add(String, String) Add(String, String) Add(String, String) Add(String, String)

Добавляет схему языка определения схем XML (XSD), расположенную по указанному URL-адресу, в XmlSchemaSet.Adds the XML Schema definition language (XSD) schema at the URL specified to the XmlSchemaSet.

Add(String, XmlReader) Add(String, XmlReader) Add(String, XmlReader) Add(String, XmlReader)

Добавляет схему языка определения схем XML (XSD), содержащуюся в XmlReader, в XmlSchemaSet.Adds the XML Schema definition language (XSD) schema contained in the XmlReader to the XmlSchemaSet.

Add(XmlSchema) Add(XmlSchema) Add(XmlSchema) Add(XmlSchema)

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

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

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

Возвраты

Объект XmlSchema, если схема успешно прошла проверку.An XmlSchema object if the schema is valid. Если схема не прошла проверку и задан ValidationEventHandler, тогда возвращается null и возникает соответствующее событие проверки.If the schema is not valid and a ValidationEventHandler is specified, then null is returned and the appropriate validation event is raised. В противном случае возникает исключение XmlSchemaException.Otherwise, an XmlSchemaException is thrown.

Исключения

Схема не прошла проверку.The schema is not valid.

Объект XmlSchema, переданный в качестве параметра, является null.The XmlSchema object passed as a parameter is null.

Комментарии

Если объект уже существует XmlSchemaSetв, Add метод не выполняет никаких действий. XmlSchemaIf the XmlSchema object already exists in the XmlSchemaSet, the Add method does nothing.

Функциональность этого метода идентична Add функции метода.The functionality of this method is identical to that of the Add method.

Add(XmlSchemaSet) Add(XmlSchemaSet) Add(XmlSchemaSet) Add(XmlSchemaSet)

Добавляет все схемы языка определения схем XML (XSD), содержащиеся в заданном XmlSchemaSet, в XmlSchemaSet.Adds all the XML Schema definition language (XSD) schemas in the given XmlSchemaSet to the XmlSchemaSet.

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)

Параметры

Исключения

Схема в XmlSchemaSet недействительна.A schema in the XmlSchemaSet is not valid.

Объект XmlSchemaSet, переданный в качестве параметра, является null.The XmlSchemaSet object passed as a parameter is null.

Примеры

В следующем примере кода XmlSchemaSetпоказано добавление схем в, а затем XmlSchemaSet Добавление в новый XmlSchemaSet с помощью Add метода.The following code example illustrates adding schemas to an XmlSchemaSet, then adding the XmlSchemaSet to a new XmlSchemaSet using the Add method.

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, она должна быть успешно обработана.Before a schema can be added to an XmlSchemaSet, it has to be successfully preprocessed. Предварительная обработка выполняет следующие основные задачи.Preprocessing performs the following basic tasks.

  1. Схема проверяется на соответствие структурной достоверности согласно правилам схемы W3C XML, но схема не полностью проверена.The schema is checked for structural validity according to the rules of W3C XML Schema, but the schema is not fully validated.

  2. Ссылки на внутренние и внешние компоненты схемы разрешаются.References to internal and external schema components are resolved. Все импортированные или включенные схемы, которые были успешно получены, также добавляются в XmlSchemaSet.Any imported or included schemas that are successfully retrieved are also added to the XmlSchemaSet. Импортированные схемы добавляются как отдельные XmlSchema объекты, а включенные схемы — в состав, включая. XmlSchemaImported schemas are added as separate XmlSchema objects, and included schemas are made a part of the including XmlSchema.

true XmlSchemaSet XmlSchemaSetЕсли свойство добавляемого элемента имеет значение, то все схемы в добавлении добавляются в. XmlSchemaSet IsCompiledIf the IsCompiled property of the XmlSchemaSet to add is true, all schemas in the XmlSchemaSet to add are added to the XmlSchemaSet. Если свойство добавляемого XmlSchemaSet объекта равно false, то каждая добавленная схема предварительно обрабатывается перед добавлением. IsCompiledIf the IsCompiled property of the XmlSchemaSet to add is false, each schema added is preprocessed before being added. Если любая из вновь добавленных XmlSchemaSet схем не может быть предварительно обработана, то схемы не добавляются; вместо этого XmlSchemaException создается исключение.If any of the schemas in the newly added XmlSchemaSet fails to be preprocessed, no schemas are added; instead, an XmlSchemaException is thrown. В результате следующий два примера кода не эквивалентны.As a result, the following two code example are not equivalent.

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

Предыдущие два примера кода не эквивалентны.The previous two code examples are not equivalent. В первом примере schemaSet1 , если имеется недопустимая схема в и для falseее IsCompiled свойства задано значение, схемы не добавляются в schemaSet.In the first example, if an invalid schema exists in schemaSet1 and its IsCompiled property is set to false, no schemas are added to schemaSet. Во втором примере можно добавить schemaSet несколько схем, прежде чем будет обнаружена недопустимая схема, и будет создано исключение.In the second example, a number of schemas can be added to schemaSet before an invalid schema is encountered and an exception is thrown.

Add(String, String) Add(String, String) Add(String, String) Add(String, String)

Добавляет схему языка определения схем XML (XSD), расположенную по указанному URL-адресу, в XmlSchemaSet.Adds the XML Schema definition language (XSD) schema at the URL specified to the XmlSchemaSet.

public:
 System::Xml::Schema::XmlSchema ^ Add(System::String ^ targetNamespace, System::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 String String String

Свойство схемы targetNamespace или null, чтобы использовалось пространство имен targetNamespace, определенное в схеме.The schema targetNamespace property, or null to use the targetNamespace specified in the schema.

schemaUri
String String String String

URL-адрес, ссылающийся на схему, которую необходимо загрузить.The URL that specifies the schema to load.

Возвраты

Объект XmlSchema, если схема успешно прошла проверку.An XmlSchema object if the schema is valid. Если схема не прошла проверку и задан ValidationEventHandler, тогда возвращается null и возникает соответствующее событие проверки.If the schema is not valid and a ValidationEventHandler is specified, then null is returned and the appropriate validation event is raised. В противном случае возникает исключение XmlSchemaException.Otherwise, an XmlSchemaException is thrown.

Исключения

Схема не прошла проверку.The schema is not valid.

URL-адрес, переданный в качестве параметра, равен null или Empty.The URL passed as a parameter is null or Empty.

Примеры

Следующий пример кода добавляет http://www.contoso.com/books.xsd схему с целевым http://www.contoso.com/books пространством имен XmlSchemaSetв.The following code example adds the http://www.contoso.com/books.xsd schema with a target namespace of http://www.contoso.com/books to the XmlSchemaSet.

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.The example uses the books.xsd file as input.

<?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, она должна быть успешно обработана.Before a schema can be added to an XmlSchemaSet, it has to be successfully preprocessed. Предварительная обработка выполняет следующие основные задачи.Preprocessing performs the following basic tasks.

  1. Схема проверяется на соответствие структурной достоверности согласно правилам схемы W3C XML, но схема не полностью проверена.The schema is checked for structural validity according to the rules of W3C XML Schema, but the schema is not fully validated.

  2. Ссылки на внутренние и внешние компоненты схемы разрешаются.References to internal and external schema components are resolved. Все импортированные или включенные схемы, которые были успешно получены, также добавляются в XmlSchemaSet.Any imported or included schemas that are successfully retrieved are also added to the XmlSchemaSet. Импортированные схемы добавляются как отдельные XmlSchema объекты, а включенные схемы — в состав, включая. XmlSchemaImported schemas are added as separate XmlSchema objects, and included schemas are made a part of the including XmlSchema.

Ниже приведены важные замечания, которые следует учитывать при использовании Add метода.The following are important notes to consider when using the Add method.

  • Добавление схемы XmlSchemaSet в объект с тем же целевым пространством имен и URL-адресом расположения схемы, который уже XmlSchemaSet содержится в схеме, вернет исходный объект схемы.Adding a schema to the XmlSchemaSet with the same target namespace and schema location URL as a schema already contained within the XmlSchemaSet will return the original schema object.

  • При успешном добавлении новой схемы в XmlSchemaSet IsCompiled свойство XmlSchemaSet имеет значение false.When a new schema is successfully added to an XmlSchemaSet, the IsCompiled property of the XmlSchemaSet is set to false.

  • Любые элементы включения или импорта, обнаруженные в схеме XML, разрешаются при Add вызове метода.Any include or import elements encountered in an XML schema are resolved when the Add method is called. Сбой при разрешении элементов включения и импорта приводит к возникновению предупреждения проверки схемы. ValidationEventHandler если для объекта не указано XmlSchemaSet значение, эти предупреждения не будут выводиться.Failure to resolve include and import elements results in a schema validation warning and if no ValidationEventHandler has been specified for the XmlSchemaSet object, these warning will not be reported.

  • Если схема с тем же целевым пространством имен, что и схема, которая уже XmlSchemaSet существует в, добавляется XmlSchemaSetв, то добавляются обе схемы.If a schema with the same target namespace as a schema that already exists in the XmlSchemaSet is added to the XmlSchemaSet, both schemas are added.

    Примечание

    Это поведение отличается от устаревшего XmlSchemaCollection объекта.This behavior differs from the obsolete XmlSchemaCollection object.

  • Метод имеет возможность использовать целевое пространство имен, определенное в схеме, вместо того, чтобы указывать целевое пространство имен в Add качестве параметра при вызове метода. XmlSchemaSet AddThe Add method of the XmlSchemaSet has the ability to use the target namespace defined in a schema, rather than requiring the target namespace be specified as a parameter when the Add method is called. Указание null XmlSchemaSet в параметреAdd метода указывает, что следует использовать целевое пространство имен, определенное в схеме, как показано в следующем примере кода. targetNamespaceSpecifying null in the targetNamespace parameter of the Add method instructs the XmlSchemaSet to use the target namespace defined in the schema, as illustrated in the following code example.

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 метода указывается.In the code example above, null is specified as the targetNamespace parameter to the Add method. В результате используется объект targetNamespace , определенный в файле books. XML.As a result, the targetNamespace defined in the books.xml file is used. В этом случае результат вызова Add метода будет идентичен, если http://www.contoso.com/books был указан в качестве targetNamespace параметра.In this case, the result of calling the Add method would be identical if http://www.contoso.com/books had been specified as the targetNamespace parameter.

  • Схема W3C XML позволяет включать схемы без целевого пространства имен в схемы с определенным целевым пространством имен.W3C XML Schema allows schemas without a target namespace to be included in schemas with a target namespace defined. В этом случае схема без определенного целевого пространства имен приводится к целевому пространству имен, включающему схему.In this case, the schema without a target namespace defined is coerced into the target namespace of the including schema. Включенная схема обрабатывается так, как если бы в ней было определено целевое пространство имен.The included schema is treated as if it had that target namespace defined. Аналогичным образом схемы без целевого пространства имен можно добавить в XmlSchemaSet и привести к целевому пространству имен, указанному Add методом, как показано в следующем примере.Similarly, schemas without a target namespace can be added to the XmlSchemaSet and coerced into the target namespace specified by the Add method, as illustrated in the following example.
<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пространство имен, объявленное в схеме, было.If the schema above is added to the XmlSchemaSet with the target namespace http://www.contoso.com/new/targetnamespace (as shown in the code below), it is treated as if the target namespace declared in the schema was 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) Add(String, XmlReader) Add(String, XmlReader) Add(String, XmlReader)

Добавляет схему языка определения схем XML (XSD), содержащуюся в XmlReader, в XmlSchemaSet.Adds the XML Schema definition language (XSD) schema contained in the XmlReader to the 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);
member this.Add : string * System.Xml.XmlReader -> System.Xml.Schema.XmlSchema
Public Function Add (targetNamespace As String, schemaDocument As XmlReader) As XmlSchema

Параметры

targetNamespace
String String String String

Свойство схемы targetNamespace или null, чтобы использовалось пространство имен targetNamespace, определенное в схеме.The schema targetNamespace property, or null to use the targetNamespace specified in the schema.

schemaDocument
XmlReader XmlReader XmlReader XmlReader

Объект XmlReader.The XmlReader object.

Возвраты

Объект XmlSchema, если схема успешно прошла проверку.An XmlSchema object if the schema is valid. Если схема не прошла проверку и задан ValidationEventHandler, тогда возвращается null и возникает соответствующее событие проверки.If the schema is not valid and a ValidationEventHandler is specified, then null is returned and the appropriate validation event is raised. В противном случае возникает исключение XmlSchemaException.Otherwise, an XmlSchemaException is thrown.

Исключения

Схема не прошла проверку.The schema is not valid.

Объект XmlReader, переданный в качестве параметра, является null.The XmlReader object passed as a parameter is null.

Примеры

В следующем примере кода добавляется схема books. xsd, содержащаяся в XmlTextReader с целевым http://www.contoso.com/books пространством имен XmlSchemaSetдля.The following code example adds the books.xsd schema contained in the XmlTextReader with a target namespace of http://www.contoso.com/books to the XmlSchemaSet.

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, она должна быть успешно обработана.Before a schema can be added to an XmlSchemaSet, it has to be successfully preprocessed. Предварительная обработка выполняет следующие основные задачи.Preprocessing performs the following basic tasks.

  1. Схема проверяется на соответствие структурной достоверности согласно правилам схемы W3C XML, но схема не полностью проверена.The schema is checked for structural validity according to the rules of W3C XML Schema, but the schema is not fully validated.

  2. Ссылки на внутренние и внешние компоненты схемы разрешаются.References to internal and external schema components are resolved. Все импортированные или включенные схемы, которые были успешно получены, также добавляются в XmlSchemaSet.Any imported or included schemas that are successfully retrieved are also added to the XmlSchemaSet. Импортированные схемы добавляются как отдельные XmlSchema объекты, а включенные схемы — в состав, включая. XmlSchemaImported schemas are added as separate XmlSchema objects, and included schemas are made a part of the including XmlSchema.

Ниже приведены важные замечания, которые следует учитывать при использовании Add метода.The following are important notes to consider when using the Add method.

  • Успешно извлеченные схемы, импортированные или включенные в схемы, содержащиеся в, XmlReader также добавляются XmlSchemaSetв.Successfully retrieved schemas imported or included by the schemas contained in the XmlReader are also added to the XmlSchemaSet.

  • Если объект не находится в корневом элементе XmlSchemaException , вызывается исключение, если текущий элемент не является элементом. XmlReaderIf the XmlReader is not positioned on the root element, an XmlSchemaException is thrown unless the current item is an element. Если текущий элемент является xs:schema элементом, документ схемы считывается XmlSchemaSetв; в противном случае создается исключение, XmlSchemaException поскольку схема недопустима.If the current item is an xs:schema element, the schema document is read into the XmlSchemaSet; otherwise, an XmlSchemaException is thrown because the schema is not valid.

  • XmlReader Если располагается на последовательности узлов XML, то добавляется только первый узел в последовательности.If the XmlReader is positioned over a sequence of XML nodes, only the first node in the sequence is added.

  • Если схема была создана из XmlReader.Create вызова метода, значение ProcessInlineSchema свойства игнорируется, так как встроенная обработка схемы не применяется к документам схемы W3C XML.If the schema was created from a XmlReader.Create method call, the value of the ProcessInlineSchema property is ignored, because inline schema processing is not applied for W3C XML Schema documents.

  • XmlResolver СвойствоXmlReader объекта не используется для разрешения ссылок на пространства имен или расположения схем в элементах include и Import.The XmlResolver property of the XmlReader is not used to resolve references to namespaces or schema locations in include and import elements. Вместо этого используется XmlSchemaSet свойство объекта. XmlResolverInstead, the XmlResolver property of the XmlSchemaSet is used.

  • Метод имеет возможность использовать целевое пространство имен, определенное в схеме, вместо того, чтобы указывать целевое пространство имен в Add качестве параметра при вызове метода. XmlSchemaSet AddThe Add method of the XmlSchemaSet has the ability to use the target namespace defined in a schema, rather than requiring the target namespace be specified as a parameter when the Add method is called. Указание null или String.Empty XmlSchemaSet для методауказывает,чтоследуетиспользоватьцелевоепространствоимен,определенноевсхеме.AddSpecifying null or String.Empty to the Add method instructs the XmlSchemaSet to use the target namespace defined in the schema. Пример такого поведения см. в Add описании метода.For an example of this behavior, see the Add method.

Оставшаяся функциональность этого метода идентична Add функции метода.The remaining functionality of this method is identical to that of the Add method.

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