XmlSchemaSet.RemoveRecursive(XmlSchema) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Odebere zadané schéma XSD (XML Schema Definition Language) a všechna schémata, která importuje 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ý chcete odebrat z objektu XmlSchemaSet.
Návraty
true pokud byl XmlSchema objekt a všechny jeho importy úspěšně odebrány; v opačném případě false.
Výjimky
Předaný XmlSchema jako parametr je null.
Příklady
Následující příklad kódu ilustruje přidání více schémat do objektu XmlSchemaSet, pak odebrání jednoho ze schémat a všech schémat, která importuje 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, která importuje 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 jeho importovaných schématech v objektu XmlSchemaSet, nic se neodebere a RemoveRecursive vrátí false. Pokud false je vrácena a ValidationEventHandler je definována, odešle se do obslužné rutiny události upozornění popisující závislosti.
Pokud zadané schéma importuje další schémata a zadané schéma bylo dříve odebráno metodou Remove , RemoveRecursive metoda neodebere importované schémata a vrátí false. Pokud se například parentSchema importy childSchema1 a childSchema2 následující kód odeberou parentSchema, ale ne importované childSchema1 a childSchema2 schémata:
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:
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.