Condividi tramite


XmlSchemaSet.Add Metodo

Definizione

Aggiunge lo schema XSD (XML Schema Definition Language) specificato all'oggetto XmlSchemaSet.

Overload

Add(XmlSchema)

Aggiunge l'oggetto XmlSchema specificato alla classe XmlSchemaSet.

Add(XmlSchemaSet)

Aggiunge tutti gli schemi XSD (XML Schema Definition Language) dell'oggetto XmlSchemaSet specificato alla classe XmlSchemaSet.

Add(String, String)

Aggiunge lo schema XSD (XML Schema Definition Language) che si trova all'URL specificato all'oggetto XmlSchemaSet.

Add(String, XmlReader)

Aggiunge lo schema XSD (XML Schema Definition Language) contenuto nella classe XmlReader alla classe XmlSchemaSet.

Add(XmlSchema)

Origine:
XmlSchemaSet.cs
Origine:
XmlSchemaSet.cs
Origine:
XmlSchemaSet.cs

Aggiunge l'oggetto XmlSchema specificato alla classe 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

Parametri

schema
XmlSchema

Oggetto XmlSchema da aggiungere alla classe XmlSchemaSet.

Restituisce

Oggetto XmlSchema, se lo schema è valido. Se lo schema non è valido e viene specificato un oggetto ValidationEventHandler, viene restituito null e viene generato l'evento di convalida appropriato. In caso contrario, verrà generata un'eccezione XmlSchemaException.

Eccezioni

Lo schema non è valido.

L'oggetto XmlSchema passato come parametro è null.

Commenti

Se l'oggetto XmlSchema esiste già in XmlSchemaSet, il Add metodo non esegue alcuna operazione.

La funzionalità di questo metodo è identica a quella del Add metodo .

Si applica a

Add(XmlSchemaSet)

Origine:
XmlSchemaSet.cs
Origine:
XmlSchemaSet.cs
Origine:
XmlSchemaSet.cs

Aggiunge tutti gli schemi XSD (XML Schema Definition Language) dell'oggetto XmlSchemaSet specificato alla classe 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)

Parametri

schemas
XmlSchemaSet

Oggetto XmlSchemaSet.

Eccezioni

Uno schema nella classe XmlSchemaSet non è valido.

L'oggetto XmlSchemaSet passato come parametro è null.

Esempio

Nell'esempio di codice seguente viene illustrato l'aggiunta di schemi a un oggetto XmlSchemaSet, quindi l'aggiunta XmlSchemaSet di a un nuovo XmlSchemaSet oggetto usando il Add metodo .

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

Commenti

Prima di poter aggiungere uno schema a un XmlSchemaSetoggetto , deve essere pre-elaborato correttamente. La pre-elaborazione esegue le attività di base seguenti.

  1. Lo schema viene controllato per verificare la validità strutturale in base alle regole di W3C XML Schema, ma lo schema non è completamente convalidato.

  2. I riferimenti ai componenti dello schema interno ed esterno vengono risolti. Tutti gli schemi importati o inclusi recuperati correttamente vengono aggiunti anche a XmlSchemaSet. Gli schemi importati vengono aggiunti come oggetti separati XmlSchema e gli schemi inclusi fanno parte di XmlSchema.

Se la IsCompiled proprietà dell'oggetto XmlSchemaSet da aggiungere è true, tutti gli schemi nell'oggetto XmlSchemaSet da aggiungere vengono aggiunti a XmlSchemaSet. Se la IsCompiled proprietà di da aggiungere è false, ogni schema aggiunto viene pre-elaborato prima di XmlSchemaSet essere aggiunto. Se uno degli schemi nel appena aggiunto XmlSchemaSet non viene pre-elaborato, non viene aggiunto alcuno schema. Viene invece generata un'eccezione XmlSchemaException . Di conseguenza, i due esempi di codice seguenti non sono equivalenti.

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

I due esempi di codice precedenti non sono equivalenti. Nel primo esempio, se esiste uno schema non valido in schemaSet1 e la relativa IsCompiled proprietà è impostata su false, non vengono aggiunti schemi a schemaSet. Nel secondo esempio è possibile aggiungere un numero di schemi a schemaSet prima che venga rilevato uno schema non valido e venga generata un'eccezione.

Si applica a

Add(String, String)

Origine:
XmlSchemaSet.cs
Origine:
XmlSchemaSet.cs
Origine:
XmlSchemaSet.cs

Aggiunge lo schema XSD (XML Schema Definition Language) che si trova all'URL specificato all'oggetto 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

Parametri

targetNamespace
String

La proprietà targetNamespace dello schema o null per utilizzare il valore targetNamespace specificato nello schema.

schemaUri
String

URL che specifica lo schema da caricare.

Restituisce

Oggetto XmlSchema, se lo schema è valido. Se lo schema non è valido e viene specificato un oggetto ValidationEventHandler, viene restituito null e viene generato l'evento di convalida appropriato. In caso contrario, verrà generata un'eccezione XmlSchemaException.

Eccezioni

Lo schema non è valido.

L'URL passato come parametro è null o Empty.

Esempio

Nell'esempio di codice seguente lo http://www.contoso.com/books.xsd schema viene aggiunto con uno spazio dei nomi di destinazione di 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");

Nell'esempio viene utilizzato il file books.xsd come 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>

Commenti

Prima di poter aggiungere uno schema a un XmlSchemaSetoggetto , deve essere pre-elaborato correttamente. La pre-elaborazione esegue le attività di base seguenti.

  1. Lo schema viene controllato per verificare la validità strutturale in base alle regole di W3C XML Schema, ma lo schema non è completamente convalidato.

  2. I riferimenti ai componenti dello schema interno ed esterno vengono risolti. Tutti gli schemi importati o inclusi recuperati correttamente vengono aggiunti anche a XmlSchemaSet. Gli schemi importati vengono aggiunti come oggetti separati XmlSchema e gli schemi inclusi fanno parte di XmlSchema.

Di seguito sono riportate note importanti da considerare quando si usa il Add metodo .

  • L'aggiunta di uno schema a XmlSchemaSet con lo stesso spazio dei nomi di destinazione e lo stesso URL del percorso dello schema come schema già contenuto in XmlSchemaSet restituirà l'oggetto schema originale.

  • Quando un nuovo schema viene aggiunto correttamente a un XmlSchemaSetoggetto , la IsCompiled proprietà di XmlSchemaSet è impostata su false.

  • Tutti gli elementi di inclusione o importazione rilevati in un XML Schema vengono risolti quando viene chiamato il Add metodo . Se non si risolve l'inclusione e l'importazione di elementi, viene generato un avviso di convalida dello schema e, se non è stato specificato alcun ValidationEventHandler elemento per l'oggetto XmlSchemaSet , questi avvisi non verranno segnalati.

  • Se uno schema con lo stesso spazio dei nomi di destinazione di uno schema già esistente in XmlSchemaSet viene aggiunto a XmlSchemaSet, vengono aggiunti entrambi gli schemi.

    Nota

    Questo comportamento è diverso dall'oggetto obsoleto XmlSchemaCollection .

  • Il Add metodo di ha la possibilità di XmlSchemaSet usare lo spazio dei nomi di destinazione definito in uno schema, anziché richiedere che lo spazio dei nomi di destinazione venga specificato come parametro quando viene chiamato il Add metodo . null Se si specifica nel targetNamespace parametro del Add metodo , viene XmlSchemaSet indicato a per usare lo spazio dei nomi di destinazione definito nello schema, come illustrato nell'esempio di codice seguente.

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

Nell'esempio di codice precedente viene null specificato come targetNamespace parametro per il Add metodo . Di conseguenza, viene usato l'oggetto targetNamespace definito nel file books.xml. In questo caso, il risultato della chiamata al Add metodo sarebbe identico se http://www.contoso.com/books fosse stato specificato come targetNamespace parametro .

  • W3C XML Schema consente agli schemi senza uno spazio dei nomi di destinazione di essere incluso negli schemi con uno spazio dei nomi di destinazione definito. In questo caso, lo schema senza uno spazio dei nomi di destinazione definito viene predefinito nello spazio dei nomi di destinazione dello schema incluso. Lo schema incluso viene considerato come se fosse definito dallo spazio dei nomi di destinazione. Analogamente, gli schemi senza uno spazio dei nomi di destinazione possono essere aggiunti a XmlSchemaSet e coerciti nello spazio dei nomi di destinazione specificato dal Add metodo , come illustrato nell'esempio seguente.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="A" type="xs:string" />
</xs:schema>

Se lo schema precedente viene aggiunto a XmlSchemaSet con lo spazio dei nomi http://www.contoso.com/new/targetnamespace di destinazione (come illustrato nel codice seguente), viene considerato come se lo spazio dei nomi di destinazione dichiarato nello schema fosse 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);
}

Si applica a

Add(String, XmlReader)

Origine:
XmlSchemaSet.cs
Origine:
XmlSchemaSet.cs
Origine:
XmlSchemaSet.cs

Aggiunge lo schema XSD (XML Schema Definition Language) contenuto nella classe XmlReader alla classe 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

Parametri

targetNamespace
String

La proprietà targetNamespace dello schema o null per utilizzare il valore targetNamespace specificato nello schema.

schemaDocument
XmlReader

Oggetto XmlReader.

Restituisce

Oggetto XmlSchema, se lo schema è valido. Se lo schema non è valido e viene specificato un oggetto ValidationEventHandler, viene restituito null e viene generato l'evento di convalida appropriato. In caso contrario, verrà generata un'eccezione XmlSchemaException.

Eccezioni

Lo schema non è valido.

L'oggetto XmlReader passato come parametro è null.

Esempio

Nell'esempio di codice seguente viene aggiunto lo schema books.xsd contenuto in XmlTextReader con uno spazio dei nomi di destinazione di 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");

Commenti

Prima di poter aggiungere uno schema a un XmlSchemaSetoggetto , deve essere pre-elaborato correttamente. La pre-elaborazione esegue le attività di base seguenti.

  1. Lo schema viene controllato per verificare la validità strutturale in base alle regole di W3C XML Schema, ma lo schema non è completamente convalidato.

  2. I riferimenti ai componenti dello schema interno ed esterno vengono risolti. Tutti gli schemi importati o inclusi recuperati correttamente vengono aggiunti anche a XmlSchemaSet. Gli schemi importati vengono aggiunti come oggetti separati XmlSchema e gli schemi inclusi fanno parte di XmlSchema.

Di seguito sono riportate note importanti da considerare quando si usa il Add metodo .

  • Anche gli schemi importati o inclusi negli schemi contenuti in XmlReader vengono aggiunti a XmlSchemaSet.

  • Se l'oggetto XmlReader non è posizionato sull'elemento radice, viene generata un'eccezione XmlSchemaException a meno che l'elemento corrente non sia un elemento . Se l'elemento corrente è un xs:schema elemento, il documento dello schema viene letto in XmlSchemaSet; in caso contrario, viene generata un'eccezione XmlSchemaException perché lo schema non è valido.

  • Se l'oggetto XmlReader è posizionato su una sequenza di nodi XML, viene aggiunto solo il primo nodo della sequenza.

  • Se lo schema è stato creato da una XmlReader.Create chiamata al metodo, il valore della ProcessInlineSchema proprietà viene ignorato perché l'elaborazione dello schema inline non viene applicata per i documenti di XML Schema W3C.

  • La XmlResolver proprietà di XmlReader non viene utilizzata per risolvere i riferimenti a spazi dei nomi o percorsi dello schema in elementi di inclusione e importazione. Viene invece utilizzata la XmlResolver proprietà dell'oggetto XmlSchemaSet .

  • Il Add metodo di ha la possibilità di XmlSchemaSet usare lo spazio dei nomi di destinazione definito in uno schema, anziché richiedere che lo spazio dei nomi di destinazione venga specificato come parametro quando viene chiamato il Add metodo . Specificare null o String.Empty al Add metodo indica XmlSchemaSet a di usare lo spazio dei nomi di destinazione definito nello schema. Per un esempio di questo comportamento, vedere il Add metodo .

La funzionalità rimanente di questo metodo è identica a quella del Add metodo .

Si applica a