XmlSchemaSet.Add Método

Definição

Adiciona o esquema de linguagem de definição de esquema XML (XSD) fornecido ao XmlSchemaSet.Adds the given XML Schema definition language (XSD) schema to the XmlSchemaSet.

Sobrecargas

Add(XmlSchema)

Adiciona o XmlSchema especificado ao XmlSchemaSet.Adds the given XmlSchema to the XmlSchemaSet.

Add(XmlSchemaSet)

Adiciona todos os esquemas XSD (linguagem de definição de esquema XML) no XmlSchemaSet determinado para o XmlSchemaSet.Adds all the XML Schema definition language (XSD) schemas in the given XmlSchemaSet to the XmlSchemaSet.

Add(String, String)

Adiciona o esquema XSD (linguagem de definição de esquema XML) à URL especificada para o XmlSchemaSet.Adds the XML Schema definition language (XSD) schema at the URL specified to the XmlSchemaSet.

Add(String, XmlReader)

Adiciona o esquema XSD (linguagem de definição de esquema XML) contido no XmlReader ao XmlSchemaSet.Adds the XML Schema definition language (XSD) schema contained in the XmlReader to the XmlSchemaSet.

Add(XmlSchema)

Adiciona o XmlSchema especificado ao 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);
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

Parâmetros

schema
XmlSchema

O objeto XmlSchema a ser adicionado ao XmlSchemaSet.The XmlSchema object to add to the XmlSchemaSet.

Retornos

XmlSchema

Um objeto XmlSchema se o esquema for válido.An XmlSchema object if the schema is valid. Se o esquema não for válido e um ValidationEventHandler for especificado, null será retornado e o evento de validação apropriado será acionado.If the schema is not valid and a ValidationEventHandler is specified, then null is returned and the appropriate validation event is raised. Caso contrário, um XmlSchemaException será gerado.Otherwise, an XmlSchemaException is thrown.

Exceções

O esquema não é válido.The schema is not valid.

O objeto XmlSchema passado como um parâmetro é null.The XmlSchema object passed as a parameter is null.

Comentários

Se o XmlSchema objeto já existir no XmlSchemaSet , o Add método não fará nada.If the XmlSchema object already exists in the XmlSchemaSet, the Add method does nothing.

A funcionalidade desse método é idêntica à do Add método.The functionality of this method is identical to that of the Add method.

Aplica-se a

Add(XmlSchemaSet)

Adiciona todos os esquemas XSD (linguagem de definição de esquema XML) no XmlSchemaSet determinado para o 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)

Parâmetros

schemas
XmlSchemaSet

O objeto XmlSchemaSet.The XmlSchemaSet object.

Exceções

Um esquema no XmlSchemaSet não é válido.A schema in the XmlSchemaSet is not valid.

O objeto XmlSchemaSet passado como um parâmetro é null.The XmlSchemaSet object passed as a parameter is null.

Exemplos

O exemplo de código a seguir ilustra como adicionar esquemas a um XmlSchemaSet e, em seguida, adicionar o XmlSchemaSet a um novo XmlSchemaSet usando o Add método.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);  

Comentários

Antes que um esquema possa ser adicionado a um XmlSchemaSet , ele precisa ser pré-processado com êxito.Before a schema can be added to an XmlSchemaSet, it has to be successfully preprocessed. O pré-processamento executa as seguintes tarefas básicas.Preprocessing performs the following basic tasks.

  1. O esquema é verificado quanto à validade estrutural de acordo com as regras do esquema XML W3C, mas o esquema não é totalmente validado.The schema is checked for structural validity according to the rules of W3C XML Schema, but the schema is not fully validated.

  2. Referências a componentes de esquema internos e externos são resolvidas.References to internal and external schema components are resolved. Todos os esquemas importados ou incluídos que são recuperados com êxito também são adicionados ao XmlSchemaSet .Any imported or included schemas that are successfully retrieved are also added to the XmlSchemaSet. Os esquemas importados são adicionados como XmlSchema objetos separados, e os esquemas incluídos são feitos como parte do, incluindo XmlSchema .Imported schemas are added as separate XmlSchema objects, and included schemas are made a part of the including XmlSchema.

Se a IsCompiled Propriedade do XmlSchemaSet para adicionar for true , todos os esquemas no XmlSchemaSet para adicionar serão adicionados ao XmlSchemaSet .If the IsCompiled property of the XmlSchemaSet to add is true, all schemas in the XmlSchemaSet to add are added to the XmlSchemaSet. Se a IsCompiled Propriedade do XmlSchemaSet a ser adicionada for false , cada esquema adicionado será pré-processado antes de ser adicionado.If the IsCompiled property of the XmlSchemaSet to add is false, each schema added is preprocessed before being added. Se algum dos esquemas do recém-adicionado XmlSchemaSet falhar em ser pré-processado, nenhum esquema será adicionado; em vez disso, um XmlSchemaException é gerado.If any of the schemas in the newly added XmlSchemaSet fails to be preprocessed, no schemas are added; instead, an XmlSchemaException is thrown. Como resultado, os dois exemplos de código a seguir não são equivalentes.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);  
}  

Os dois exemplos de código anteriores não são equivalentes.The previous two code examples are not equivalent. No primeiro exemplo, se um esquema inválido existir em schemaSet1 e sua IsCompiled propriedade for definida como false , nenhum esquema será adicionado ao 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. No segundo exemplo, vários esquemas podem ser adicionados ao schemaSet antes de um esquema inválido ser encontrado e uma exceção é lançada.In the second example, a number of schemas can be added to schemaSet before an invalid schema is encountered and an exception is thrown.

Aplica-se a

Add(String, String)

Adiciona o esquema XSD (linguagem de definição de esquema XML) à URL especificada para o 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);
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

Parâmetros

targetNamespace
String

A propriedade targetNamespace do esquema ou null para usar o targetNamespace especificado no esquema.The schema targetNamespace property, or null to use the targetNamespace specified in the schema.

schemaUri
String

A URL que especifica o esquema a ser carregado.The URL that specifies the schema to load.

Retornos

XmlSchema

Um objeto XmlSchema se o esquema for válido.An XmlSchema object if the schema is valid. Se o esquema não for válido e um ValidationEventHandler for especificado, null será retornado e o evento de validação apropriado será acionado.If the schema is not valid and a ValidationEventHandler is specified, then null is returned and the appropriate validation event is raised. Caso contrário, um XmlSchemaException será gerado.Otherwise, an XmlSchemaException is thrown.

Exceções

O esquema não é válido.The schema is not valid.

A URL passada como um parâmetro é null ou Empty.The URL passed as a parameter is null or Empty.

Exemplos

O exemplo de código a seguir adiciona o http://www.contoso.com/books.xsd esquema com um namespace de destino de http://www.contoso.com/books ao 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");  

O exemplo usa o arquivo books.xsd como entrada.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>

Comentários

Antes que um esquema possa ser adicionado a um XmlSchemaSet , ele precisa ser pré-processado com êxito.Before a schema can be added to an XmlSchemaSet, it has to be successfully preprocessed. O pré-processamento executa as seguintes tarefas básicas.Preprocessing performs the following basic tasks.

  1. O esquema é verificado quanto à validade estrutural de acordo com as regras do esquema XML W3C, mas o esquema não é totalmente validado.The schema is checked for structural validity according to the rules of W3C XML Schema, but the schema is not fully validated.

  2. Referências a componentes de esquema internos e externos são resolvidas.References to internal and external schema components are resolved. Todos os esquemas importados ou incluídos que são recuperados com êxito também são adicionados ao XmlSchemaSet .Any imported or included schemas that are successfully retrieved are also added to the XmlSchemaSet. Os esquemas importados são adicionados como XmlSchema objetos separados, e os esquemas incluídos são feitos como parte do, incluindo XmlSchema .Imported schemas are added as separate XmlSchema objects, and included schemas are made a part of the including XmlSchema.

Veja a seguir as observações importantes a serem consideradas ao usar o Add método.The following are important notes to consider when using the Add method.

  • A adição de um esquema ao XmlSchemaSet com o mesmo namespace de destino e a URL do local do esquema como um esquema já contido no retornará XmlSchemaSet o objeto de esquema original.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.

  • Quando um novo esquema é adicionado com êxito a um XmlSchemaSet , a IsCompiled propriedade de XmlSchemaSet é definida como false .When a new schema is successfully added to an XmlSchemaSet, the IsCompiled property of the XmlSchemaSet is set to false.

  • Quaisquer elementos include ou Import encontrados em um esquema XML são resolvidos quando o Add método é chamado.Any include or import elements encountered in an XML schema are resolved when the Add method is called. A falha ao resolver elementos include e Import resulta em um aviso de validação de esquema e, se nenhum ValidationEventHandler tiver sido especificado para o XmlSchemaSet objeto, esse aviso não será relatado.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.

  • Se um esquema com o mesmo namespace de destino como um esquema que já existe no XmlSchemaSet for adicionado ao XmlSchemaSet , ambos os esquemas serão adicionados.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.

    Observação

    Esse comportamento é diferente do objeto obsoleto XmlSchemaCollection .This behavior differs from the obsolete XmlSchemaCollection object.

  • O Add método do XmlSchemaSet tem a capacidade de usar o namespace de destino definido em um esquema, em vez de exigir que o namespace de destino seja especificado como um parâmetro quando o Add método é chamado.The 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. Especificar null no targetNamespace parâmetro do Add método instrui o XmlSchemaSet a usar o namespace de destino definido no esquema, conforme ilustrado no exemplo de código a seguir.Specifying 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);  
}  

No exemplo de código acima, null é especificado como o targetNamespace parâmetro para o Add método.In the code example above, null is specified as the targetNamespace parameter to the Add method. Como resultado, o targetNamespace definido no arquivo de books.xml é usado.As a result, the targetNamespace defined in the books.xml file is used. Nesse caso, o resultado da chamada do Add método seria idêntico se http://www.contoso.com/books tivesse sido especificado como o targetNamespace parâmetro.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.

  • O esquema XML W3C permite que esquemas sem um namespace de destino sejam incluídos em esquemas com um namespace de destino definido.W3C XML Schema allows schemas without a target namespace to be included in schemas with a target namespace defined. Nesse caso, o esquema sem um namespace de destino definido é forçado no namespace de destino do esquema de inclusão.In this case, the schema without a target namespace defined is coerced into the target namespace of the including schema. O esquema incluído é tratado como se tivesse esse namespace de destino definido.The included schema is treated as if it had that target namespace defined. Da mesma forma, esquemas sem um namespace de destino podem ser adicionados ao XmlSchemaSet e impostos no namespace de destino especificado pelo Add método, conforme ilustrado no exemplo a seguir.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>  

Se o esquema acima for adicionado ao XmlSchemaSet com o namespace de destino http://www.contoso.com/new/targetnamespace (conforme mostrado no código abaixo), ele será tratado como se o namespace de destino declarado no esquema fosse 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);  
}  

Aplica-se a

Add(String, XmlReader)

Adiciona o esquema XSD (linguagem de definição de esquema XML) contido no XmlReader ao 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);
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

Parâmetros

targetNamespace
String

A propriedade targetNamespace do esquema ou null para usar o targetNamespace especificado no esquema.The schema targetNamespace property, or null to use the targetNamespace specified in the schema.

schemaDocument
XmlReader

O objeto XmlReader.The XmlReader object.

Retornos

XmlSchema

Um objeto XmlSchema se o esquema for válido.An XmlSchema object if the schema is valid. Se o esquema não for válido e um ValidationEventHandler for especificado, null será retornado e o evento de validação apropriado será acionado.If the schema is not valid and a ValidationEventHandler is specified, then null is returned and the appropriate validation event is raised. Caso contrário, um XmlSchemaException será gerado.Otherwise, an XmlSchemaException is thrown.

Exceções

O esquema não é válido.The schema is not valid.

O objeto XmlReader passado como um parâmetro é null.The XmlReader object passed as a parameter is null.

Exemplos

O exemplo de código a seguir adiciona o esquema Books. xsd contido no XmlTextReader com um namespace de destino de http://www.contoso.com/books para o 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");  

Comentários

Antes que um esquema possa ser adicionado a um XmlSchemaSet , ele precisa ser pré-processado com êxito.Before a schema can be added to an XmlSchemaSet, it has to be successfully preprocessed. O pré-processamento executa as seguintes tarefas básicas.Preprocessing performs the following basic tasks.

  1. O esquema é verificado quanto à validade estrutural de acordo com as regras do esquema XML W3C, mas o esquema não é totalmente validado.The schema is checked for structural validity according to the rules of W3C XML Schema, but the schema is not fully validated.

  2. Referências a componentes de esquema internos e externos são resolvidas.References to internal and external schema components are resolved. Todos os esquemas importados ou incluídos que são recuperados com êxito também são adicionados ao XmlSchemaSet .Any imported or included schemas that are successfully retrieved are also added to the XmlSchemaSet. Os esquemas importados são adicionados como XmlSchema objetos separados, e os esquemas incluídos são feitos como parte do, incluindo XmlSchema .Imported schemas are added as separate XmlSchema objects, and included schemas are made a part of the including XmlSchema.

Veja a seguir as observações importantes a serem consideradas ao usar o Add método.The following are important notes to consider when using the Add method.

  • Os esquemas importados ou incluídos com êxito pelos esquemas contidos no XmlReader também são adicionados ao XmlSchemaSet .Successfully retrieved schemas imported or included by the schemas contained in the XmlReader are also added to the XmlSchemaSet.

  • Se o XmlReader não estiver posicionado no elemento raiz, um XmlSchemaException será lançado, a menos que o item atual seja um elemento.If the XmlReader is not positioned on the root element, an XmlSchemaException is thrown unless the current item is an element. Se o item atual for um xs:schema elemento, o documento de esquema será lido no XmlSchemaSet ; caso contrário, um XmlSchemaException será gerado porque o esquema não é válido.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.

  • Se o XmlReader for posicionado sobre uma sequência de nós XML, somente o primeiro nó na sequência será adicionado.If the XmlReader is positioned over a sequence of XML nodes, only the first node in the sequence is added.

  • Se o esquema tiver sido criado a partir de uma XmlReader.Create chamada de método, o valor da ProcessInlineSchema propriedade será ignorado, pois o processamento de esquema embutido não é aplicado a documentos de esquema XML W3C.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.

  • A XmlResolver propriedade de XmlReader não é usada para resolver referências a namespaces ou locais de esquema nos elementos include e Import.The XmlResolver property of the XmlReader is not used to resolve references to namespaces or schema locations in include and import elements. Em vez disso, a XmlResolver Propriedade do XmlSchemaSet é usada.Instead, the XmlResolver property of the XmlSchemaSet is used.

  • O Add método do XmlSchemaSet tem a capacidade de usar o namespace de destino definido em um esquema, em vez de exigir que o namespace de destino seja especificado como um parâmetro quando o Add método é chamado.The 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. Especificar null ou String.Empty para o Add método instrui o XmlSchemaSet a usar o namespace de destino definido no esquema.Specifying null or String.Empty to the Add method instructs the XmlSchemaSet to use the target namespace defined in the schema. Para obter um exemplo desse comportamento, consulte o Add método.For an example of this behavior, see the Add method.

A funcionalidade restante desse método é idêntica à do Add método.The remaining functionality of this method is identical to that of the Add method.

Aplica-se a