XmlSchemaSet.RemoveRecursive(XmlSchema) Metoda

Definice

Odebere zadané schéma jazyka XSD (Xml Schema Definition Language) a všechna schémata importovaná z objektu XmlSchemaSet.

public:
 bool RemoveRecursive(System::Xml::Schema::XmlSchema ^ schemaToRemove);
public bool RemoveRecursive (System.Xml.Schema.XmlSchema schemaToRemove);
member this.RemoveRecursive : System.Xml.Schema.XmlSchema -> bool
Public Function RemoveRecursive (schemaToRemove As XmlSchema) As Boolean

Parametry

schemaToRemove
XmlSchema

Objekt XmlSchema , který se má odebrat z objektu XmlSchemaSet.

Návraty

true pokud se XmlSchema objekt a všechny jeho importy úspěšně odebraly, falsev opačném případě .

Výjimky

Předaný XmlSchema jako parametr je null.

Příklady

Následující příklad kódu ukazuje přidání více schémat do objektu XmlSchemaSeta pak odebrání jednoho ze schémat a všech schémat importovaných pomocí RemoveRecursive metody .

Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
schemaSet.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd")
schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd")
schemaSet.Add("http://www.contoso.com/music", "http://www.contoso.com/music.xsd")

Dim schema As XmlSchema

For Each schema In schemaSet.Schemas()

    If schema.TargetNamespace = "http://www.contoso.com/music" Then
        schemaSet.RemoveRecursive(schema)
    End If

Next
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd");
schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd");
schemaSet.Add("http://www.contoso.com/music", "http://www.contoso.com/music.xsd");

foreach (XmlSchema schema in schemaSet.Schemas())
{
    if (schema.TargetNamespace == "http://www.contoso.com/music")
    {
        schemaSet.RemoveRecursive(schema);
    }
}

Poznámky

Metoda RemoveRecursive odebere zadané schéma a všechna schémata importovaná z objektu XmlSchemaSet, pokud neexistují žádné závislosti na schématu nebo jeho importovaných schématech. Pokud existují závislosti na schématu nebo importovaných schématech v XmlSchemaSet, nic se neodebere a RemoveRecursive vrátí false. Pokud false se vrátí a ValidationEventHandler je definována hodnota , obslužné rutině události se odešle upozornění popisující závislosti.

Pokud zadané schéma importuje jiná schémata a zadané schéma bylo dříve odebráno metodou Remove , RemoveRecursive metoda importovaná schémata neodebere a vrátí false. Pokud například parentSchema import childSchema1 a childSchema2 následující kód odebere parentSchemajenom , ale ne importovaná childSchema1 schémata a childSchema2 :

XmlSchemaSet ss = new XmlSchemaSet();
XmlSchema xs = XmlSchema.Read(XmlReader.Create("parentSchema.xsd"), null);
ss.Add(xs);
ss.Compile();
ss.Remove(xs);
ss.Compile();
ss.RemoveRecursive(xs);
ss.Compile();

Následující kód odebere parentSchema importovaná schémata a :

XmlSchemaSet ss = new XmlSchemaSet();
XmlSchema xs = XmlSchema.Read(XmlReader.Create("parentSchema.xsd"), null);
ss.Add(xs);
ss.Compile();
ss.RemoveRecursive(xs);
ss.Compile();

Metoda RemoveRecursive nemá žádný vliv na stav IsCompiled vlastnosti.

Platí pro