XmlSchemaSet.Add Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
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.
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 false
en 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.
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.
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
false
IsCompiled .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 eltargetNamespace
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.
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.
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.
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 .