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обработку. Предварительная обработка выполняет следующие основные задачи.
Схема проверяется на наличие структурной действительности в соответствии с правилами XML-схемы W3C, но схема не полностью проверена.
Разрешены ссылки на внутренние и внешние компоненты схемы. Все импортированные или включенные схемы, которые успешно извлекаются, также добавляются в .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обработку. Предварительная обработка выполняет следующие основные задачи.
Схема проверяется на наличие структурной действительности в соответствии с правилами XML-схемы W3C, но схема не полностью проверена.
Разрешены ссылки на внутренние и внешние компоненты схемы. Все импортированные или включенные схемы, которые успешно извлекаются, также добавляются в .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 в схеме.
Возвращаемое значение
Объект, 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обработку. Предварительная обработка выполняет следующие основные задачи.
Схема проверяется на наличие структурной действительности в соответствии с правилами XML-схемы W3C, но схема не полностью проверена.
Разрешены ссылки на внутренние и внешние компоненты схемы. Все импортированные или включенные схемы, которые успешно извлекаются, также добавляются в .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 функции метода.