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.
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 Если объект уже существует в XmlSchemaSet, Add метод ничего не делает.
Функциональные возможности этого метода идентичны Add функциям метода .
Применяется к
Add(XmlSchemaSet)
- Исходный код:
- XmlSchemaSet.cs
- Исходный код:
- XmlSchemaSet.cs
- Исходный код:
- XmlSchemaSet.cs
Добавляет все схемы языка определения схем XML (XSD), содержащиеся в заданном XmlSchemaSet, в 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)
Параметры
- 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, она должна быть успешно обработана. Предварительная обработка выполняет следующие основные задачи.
Схема проверяется на структурную достоверность в соответствии с правилами схемы W3C XML, но схема не полностью проверена.
Ссылки на внутренние и внешние компоненты схемы разрешаются. Все импортированные или включенные схемы, которые успешно получены, также добавляются в XmlSchemaSet. Импортированные схемы добавляются в виде отдельных XmlSchema объектов, а включенные схемы являются частью включающего XmlSchema.
IsCompiled Если свойство добавляемого XmlSchemaSet объекта равно true
, все схемы в добавляемом XmlSchemaSet объекте добавляются в XmlSchemaSet.
IsCompiled Если свойство добавляемого XmlSchemaSet объекта имеет значение false
, каждая добавленная схема предварительно обрабатывается перед добавлением. Если какая-либо из схем в добавленном 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
Добавляет схему языка определения схем 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-адрес, переданный в качестве параметра, равен null
или Empty.
Примеры
В следующем примере кода схема с целевым пространством http://www.contoso.com/books
имен добавляется http://www.contoso.com/books.xsd
в 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
.
<?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, она должна быть успешно обработана. Предварительная обработка выполняет следующие основные задачи.
Схема проверяется на структурную достоверность в соответствии с правилами схемы W3C XML, но схема не полностью проверена.
Ссылки на внутренние и внешние компоненты схемы разрешаются. Все импортированные или включенные схемы, которые успешно получены, также добавляются в XmlSchemaSet. Импортированные схемы добавляются в виде отдельных XmlSchema объектов, а включенные схемы являются частью включающего XmlSchema.
Ниже приведены важные примечания, которые следует учитывать при использовании Add метода .
Добавление схемы в объект XmlSchemaSet с тем же целевым пространством имен и URL-адресом расположения схемы, что и схема, уже содержащаяся в XmlSchemaSet , вернет исходный объект схемы.
При успешном добавлении новой схемы в XmlSchemaSetIsCompiled свойство XmlSchemaSet задается значение
false
.Все элементы включения или импорта, встречающиеся в XML-схеме, разрешаются при вызове Add метода . Сбой при разрешении элементов включения и импорта приводит к предупреждению о проверке схемы, и если для XmlSchemaSet объекта не ValidationEventHandler указано, это предупреждение не будет сообщено.
Если схема с тем же целевым пространством имен, что и схема, которая уже существует в , добавляется в XmlSchemaSetXmlSchemaSet, добавляются обе схемы.
Примечание
Это поведение отличается от устаревшего XmlSchemaCollection объекта.
Метод AddXmlSchemaSet объекта имеет возможность использовать целевое пространство имен, определенное в схеме, а не требовать, чтобы целевое пространство имен указывалось в качестве параметра при вызове Add метода. Указание
null
в параметреtargetNamespace
Add метода указывает XmlSchemaSet , что следует использовать целевое пространство имен, определенное в схеме, как показано в следующем примере кода.
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
Добавляет схему языка определения схем 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
, определенное в схеме.
Возвращаемое значение
Объект XmlSchema, если схема успешно прошла проверку. Если схема не прошла проверку и задан ValidationEventHandler, тогда возвращается null
и возникает соответствующее событие проверки. В противном случае возникает исключение XmlSchemaException.
Исключения
Схема не прошла проверку.
Объект XmlReader, переданный в качестве параметра, является null
.
Примеры
В следующем примере кода схема books.xsd, содержащаяся в , с целевым пространством имен добавляется в XmlTextReaderXmlSchemaSet.http://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, она должна быть успешно обработана. Предварительная обработка выполняет следующие основные задачи.
Схема проверяется на структурную достоверность в соответствии с правилами схемы W3C XML, но схема не полностью проверена.
Ссылки на внутренние и внешние компоненты схемы разрешаются. Все импортированные или включенные схемы, которые успешно получены, также добавляются в 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 функциям метода .