Comparteix a través de


XmlSchemaSet.Add Método

Definición

Agrega el esquema del lenguaje de definición de esquemas XML (XSD) especificado a la clase XmlSchemaSet.

Sobrecargas

Add(XmlSchema)

Agrega el XmlSchema predeterminado a XmlSchemaSet.

Add(XmlSchemaSet)

Agrega todos los esquemas del lenguaje de definición de esquemas XML (XSD) de la clase XmlSchemaSet especificada a XmlSchemaSet.

Add(String, String)

Agrega el esquema del lenguaje de definición de esquemas XML (XSD) de la dirección URL especificada a XmlSchemaSet.

Add(String, XmlReader)

Agrega el esquema del lenguaje de definición de esquemas XML (XSD) incluido en XmlReader a XmlSchemaSet.

Add(XmlSchema)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs

Agrega el XmlSchema predeterminado a 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

Objeto XmlSchema que se va a agregar a la colección XmlSchemaSet.

Devoluciones

Objeto XmlSchema si el esquema es válido. Si el esquema no es válido y se especifica ValidationEventHandler, se devolverá el valor null y se iniciará el evento de validación adecuado. De lo contrario, se produce una excepción XmlSchemaException.

Excepciones

El esquema no es válido.

El objeto XmlSchema que se pasa como parámetro es null.

Comentarios

Si el XmlSchema objeto ya existe en XmlSchemaSet, el Add método no hace nada.

La funcionalidad de este método es idéntica a la Add del método .

Se aplica a

Add(XmlSchemaSet)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs

Agrega todos los esquemas del lenguaje de definición de esquemas XML (XSD) de la clase XmlSchemaSet especificada a 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

Objeto XmlSchemaSet.

Excepciones

Un esquema de XmlSchemaSet no es válido.

El objeto XmlSchemaSet que se pasa como parámetro es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo agregar esquemas a un XmlSchemaSety, a continuación, agregar a XmlSchemaSet un nuevo XmlSchemaSet mediante el Add método .

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

Comentarios

Antes de que se pueda agregar un esquema a , XmlSchemaSetdebe preprocesarse correctamente. El preprocesamiento realiza las siguientes tareas básicas.

  1. El esquema se comprueba para comprobar la validez estructural según las reglas del esquema XML de W3C, pero el esquema no está totalmente validado.

  2. Se resuelven las referencias a los componentes de esquema interno y externo. Los esquemas importados o incluidos que se recuperan correctamente también se agregan a XmlSchemaSet. Los esquemas importados se agregan como objetos independientes XmlSchema y los esquemas incluidos se convierten en parte de , incluido XmlSchema.

Si la IsCompiled propiedad de que XmlSchemaSet se va a agregar es true, todos los esquemas del XmlSchemaSet objeto que se van a agregar se agregan a XmlSchemaSet. Si la IsCompiled propiedad de que XmlSchemaSet se va a agregar es false, cada esquema agregado se preprocesa antes de agregarse. Si alguno de los esquemas del recién agregado XmlSchemaSet no se puede preprocesar, no se agrega ningún esquema; en su lugar, se produce una XmlSchemaException excepción . Como resultado, los dos ejemplos de código siguientes no son equivalentes.

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

Los dos ejemplos de código anteriores no son equivalentes. En el primer ejemplo, si existe un esquema no válido en y su IsCompiled propiedad se establece falseen schemaSet1 , no se agrega ningún esquema a schemaSet. En el segundo ejemplo, se pueden agregar varios esquemas a schemaSet antes de encontrar un esquema no válido y se produce una excepción.

Se aplica a

Add(String, String)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs

Agrega el esquema del lenguaje de definición de esquemas XML (XSD) de la dirección URL especificada a 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

Propiedad de esquema targetNamespace o valor null para utilizar el targetNamespace especificado en el esquema.

schemaUri
String

Dirección URL que especifica el esquema que se va a cargar.

Devoluciones

Objeto XmlSchema si el esquema es válido. Si el esquema no es válido y se especifica ValidationEventHandler, se devolverá el valor null y se iniciará el evento de validación adecuado. De lo contrario, se produce una excepción XmlSchemaException.

Excepciones

El esquema no es válido.

La dirección URL que se pasa como parámetro es null o Empty.

Ejemplos

En el ejemplo de código siguiente se agrega el http://www.contoso.com/books.xsd esquema con un espacio de nombres de destino de http://www.contoso.com/books a 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");

En el ejemplo se utiliza como entrada el archivo 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>

Comentarios

Antes de que se pueda agregar un esquema a , XmlSchemaSetdebe preprocesarse correctamente. El preprocesamiento realiza las siguientes tareas básicas.

  1. El esquema se comprueba para comprobar la validez estructural según las reglas del esquema XML de W3C, pero el esquema no está totalmente validado.

  2. Se resuelven las referencias a los componentes de esquema interno y externo. Los esquemas importados o incluidos que se recuperan correctamente también se agregan a XmlSchemaSet. Los esquemas importados se agregan como objetos independientes XmlSchema y los esquemas incluidos se convierten en parte de , incluido XmlSchema.

A continuación se muestran notas importantes que se deben tener en cuenta al usar el Add método .

  • Agregar un esquema a XmlSchemaSet con el mismo espacio de nombres de destino y la dirección URL de ubicación del esquema que un esquema ya incluido en XmlSchemaSet devolverá el objeto de esquema original.

  • Cuando se agrega correctamente un nuevo esquema a , XmlSchemaSetla propiedad de XmlSchemaSet se establece en falseIsCompiled .

  • Los elementos de inclusión o importación encontrados en un esquema XML se resuelven cuando se llama al Add método . Si no se resuelven los elementos de inclusión e importación, se genera una advertencia de validación de esquema y, si no se ha especificado para ValidationEventHandler el XmlSchemaSet objeto, no se notificará esta advertencia.

  • Si un esquema con el mismo espacio de nombres de destino que ya existe en XmlSchemaSet se agrega a XmlSchemaSet, se agregan ambos esquemas.

    Nota:

    Este comportamiento difiere del objeto obsoleto XmlSchemaCollection .

  • El Add método de tiene la capacidad de XmlSchemaSet usar el espacio de nombres de destino definido en un esquema, en lugar de requerir que el espacio de nombres de destino se especifique como parámetro cuando se llama al Add método . Al especificar null en el targetNamespace parámetro del Add método se indica XmlSchemaSet a que use el espacio de nombres de destino definido en el esquema, como se muestra en el ejemplo de código siguiente.

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

En el ejemplo de código anterior, null se especifica como el targetNamespace parámetro para el Add método . Como resultado, se usa el targetNamespace definido en el archivo books.xml. En este caso, el resultado de llamar al Add método sería idéntico si http://www.contoso.com/books se hubiera especificado como el targetNamespace parámetro .

  • El esquema XML W3C permite incluir esquemas sin un espacio de nombres de destino en esquemas con un espacio de nombres de destino definido. En este caso, el esquema sin un espacio de nombres de destino definido se convierte en el espacio de nombres de destino del esquema incluido. El esquema incluido se trata como si tuviera definido ese espacio de nombres de destino. Del mismo modo, los esquemas sin un espacio de nombres de destino se pueden agregar al XmlSchemaSet espacio de nombres de destino especificado por el Add método , como se muestra en el ejemplo siguiente.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="A" type="xs:string" />
</xs:schema>

Si el esquema anterior se agrega al XmlSchemaSet con el espacio de nombres http://www.contoso.com/new/targetnamespace de destino (como se muestra en el código siguiente), se trata como si el espacio de nombres de destino declarado en el esquema fuera 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);
}

Se aplica a

Add(String, XmlReader)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs

Agrega el esquema del lenguaje de definición de esquemas XML (XSD) incluido en XmlReader a 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

Propiedad de esquema targetNamespace o valor null para utilizar el targetNamespace especificado en el esquema.

schemaDocument
XmlReader

Objeto XmlReader.

Devoluciones

Objeto XmlSchema si el esquema es válido. Si el esquema no es válido y se especifica ValidationEventHandler, se devolverá el valor null y se iniciará el evento de validación adecuado. De lo contrario, se produce una excepción XmlSchemaException.

Excepciones

El esquema no es válido.

El objeto XmlReader que se pasa como parámetro es null.

Ejemplos

En el ejemplo de código siguiente se agrega el esquema books.xsd contenido en XmlTextReader con un espacio de nombres de destino de http://www.contoso.com/books a 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");

Comentarios

Antes de que se pueda agregar un esquema a , XmlSchemaSetdebe preprocesarse correctamente. El preprocesamiento realiza las siguientes tareas básicas.

  1. El esquema se comprueba para comprobar la validez estructural según las reglas del esquema XML de W3C, pero el esquema no está totalmente validado.

  2. Se resuelven las referencias a los componentes de esquema interno y externo. Los esquemas importados o incluidos que se recuperan correctamente también se agregan a XmlSchemaSet. Los esquemas importados se agregan como objetos independientes XmlSchema y los esquemas incluidos se convierten en parte de , incluido XmlSchema.

A continuación se muestran notas importantes que se deben tener en cuenta al usar el Add método .

  • Los esquemas recuperados correctamente importados o incluidos por los esquemas contenidos en XmlReader también se agregan a XmlSchemaSet.

  • XmlReader Si no se coloca en el elemento raíz, se produce una XmlSchemaException excepción a menos que el elemento actual sea un elemento . Si el elemento actual es un xs:schema elemento , el documento de esquema se lee en XmlSchemaSet; de lo contrario, se produce una XmlSchemaException excepción porque el esquema no es válido.

  • XmlReader Si se coloca en una secuencia de nodos XML, solo se agrega el primer nodo de la secuencia.

  • Si el esquema se creó a partir de una XmlReader.Create llamada de método, se omite el valor de la ProcessInlineSchema propiedad , porque el procesamiento de esquemas insertados no se aplica a los documentos de esquema XML W3C.

  • La XmlResolver propiedad de XmlReader no se usa para resolver referencias a espacios de nombres o ubicaciones de esquema en elementos de inclusión e importación. En su lugar, se usa la XmlResolver propiedad de .XmlSchemaSet

  • El Add método de tiene la capacidad de XmlSchemaSet usar el espacio de nombres de destino definido en un esquema, en lugar de requerir que el espacio de nombres de destino se especifique como parámetro cuando se llama al Add método . Al especificar null o String.Empty al Add método se indica a que XmlSchemaSet use el espacio de nombres de destino definido en el esquema. Para obtener un ejemplo de este comportamiento, vea el Add método .

La funcionalidad restante de este método es idéntica a la Add del método .

Se aplica a