Sdílet prostřednictvím


XmlSchemaSet.Add Metoda

Definice

Přidá dané schéma jazyka XSD (Xml Schema Definition Language) do .XmlSchemaSet

Přetížení

Add(XmlSchema)

Přidá danou XmlSchema hodnotu do XmlSchemaSet.

Add(XmlSchemaSet)

Přidá všechna schémata jazyka XSD (Xml Schema Definition Language) v daném XmlSchemaSet objektu XmlSchemaSetdo .

Add(String, String)

Přidá schéma jazyka XSD (XML Schema Definition Language) na adresu URL zadanou do .XmlSchemaSet

Add(String, XmlReader)

Přidá schéma jazyka XSD (XML Schema Definition Language) obsažené v objektu XmlReaderXmlSchemaSetdo .

Add(XmlSchema)

Zdroj:
XmlSchemaSet.cs
Zdroj:
XmlSchemaSet.cs
Zdroj:
XmlSchemaSet.cs

Přidá danou XmlSchema hodnotu do 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

Parametry

schema
XmlSchema

Objekt XmlSchema , který se má přidat do objektu XmlSchemaSet.

Návraty

Objekt XmlSchema , pokud je schéma platné. Pokud schéma není platné a ValidationEventHandler je zadána hodnota , null vrátí se a vyvolá se příslušná událost ověření. V opačném XmlSchemaException případě je vyvolán objekt .

Výjimky

Schéma není platné.

Objekt XmlSchema předaný jako parametr je null.

Poznámky

XmlSchema Pokud objekt již existuje v objektu XmlSchemaSet, Add metoda neprovede nic.

Funkce této metody je shodná Add s funkcí metody .

Platí pro

Add(XmlSchemaSet)

Zdroj:
XmlSchemaSet.cs
Zdroj:
XmlSchemaSet.cs
Zdroj:
XmlSchemaSet.cs

Přidá všechna schémata jazyka XSD (Xml Schema Definition Language) v daném XmlSchemaSet objektu XmlSchemaSetdo .

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)

Parametry

schemas
XmlSchemaSet

Objekt XmlSchemaSet

Výjimky

Schéma v souboru XmlSchemaSet není platné.

Objekt XmlSchemaSet předaný jako parametr je null.

Příklady

Následující příklad kódu ukazuje přidání schémat do objektu XmlSchemaSeta pak přidání XmlSchemaSet do nového XmlSchemaSet pomocí Add metody .

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

Poznámky

Před přidání schématu do objektu XmlSchemaSetje nutné ho úspěšně předzpracovat. Předběžné zpracování provádí následující základní úlohy.

  1. Kontroluje se strukturální platnost schématu podle pravidel schématu XML W3C, ale schéma není plně ověřeno.

  2. Přeloží se odkazy na interní a externí součásti schématu. Všechna importovaná nebo zahrnutá schémata, která se úspěšně načtou, se také přidají do XmlSchemaSet. Importovaná schémata jsou přidána jako samostatné XmlSchema objekty a zahrnutá schémata jsou součástí včetně XmlSchema.

IsCompiled Pokud je truevlastnost objektu XmlSchemaSet , všechna schémata v objektuXmlSchemaSet, který chcete přidat, se přidají do objektu XmlSchemaSet. IsCompiled Pokud je falsevlastnost XmlSchemaSet přidat , před přidáním se před přidáním předzpracuje každé přidané schéma. Pokud se některé schéma v nově přidaném XmlSchemaSet schématu nepodaří předzpracovat, nepřidají se žádná schémata. XmlSchemaException Místo toho se vyvolá chyba . V důsledku toho následující dva příklady kódu nejsou ekvivalentní.

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

Předchozí dva příklady kódu nejsou ekvivalentní. Pokud v prvním příkladu existuje neplatné schéma a schemaSet1 jeho IsCompiled vlastnost je nastavená na false, do se nepřidají schemaSetžádná schémata. V druhém příkladu lze před výskytem neplatného schématu přidat schemaSet několik schémat a vyvolání výjimky.

Platí pro

Add(String, String)

Zdroj:
XmlSchemaSet.cs
Zdroj:
XmlSchemaSet.cs
Zdroj:
XmlSchemaSet.cs

Přidá schéma jazyka XSD (XML Schema Definition Language) na adresu URL zadanou do .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

Parametry

targetNamespace
String

Vlastnost schématu targetNamespace nebo null použít targetNamespace vlastnost zadanou ve schématu.

schemaUri
String

Adresa URL, která určuje schéma, které se má načíst.

Návraty

Objekt XmlSchema , pokud je schéma platné. Pokud schéma není platné a ValidationEventHandler je zadána hodnota , null vrátí se a vyvolá se příslušná událost ověření. V opačném XmlSchemaException případě je vyvolán objekt .

Výjimky

Schéma není platné.

Adresa URL předaná jako parametr je null nebo Empty.

Příklady

Následující příklad kódu přidá http://www.contoso.com/books.xsd schéma s cílovým oborem http://www.contoso.com/books názvů do 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");

V příkladu se books.xsd jako vstup použije soubor .

<?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>

Poznámky

Před přidání schématu do objektu XmlSchemaSetje nutné ho úspěšně předzpracovat. Předběžné zpracování provádí následující základní úlohy.

  1. Kontroluje se strukturální platnost schématu podle pravidel schématu XML W3C, ale schéma není plně ověřeno.

  2. Přeloží se odkazy na interní a externí součásti schématu. Všechna importovaná nebo zahrnutá schémata, která se úspěšně načtou, se také přidají do XmlSchemaSet. Importovaná schémata jsou přidána jako samostatné XmlSchema objekty a zahrnutá schémata jsou součástí včetně XmlSchema.

Při použití metody je potřeba vzít v úvahu následující důležité poznámky Add .

  • Přidání schématu do objektu XmlSchemaSet se stejným cílovým oborem názvů a adresou URL umístění schématu, jako je schéma již obsažené v objektu XmlSchemaSet , vrátí původní objekt schématu.

  • Po úspěšném přidání nového schématu do objektu XmlSchemaSetje IsCompiled vlastnost objektu nastavena XmlSchemaSet na falsehodnotu .

  • Všechny prvky zahrnutí nebo importu zjištěné ve schématu XML jsou vyřešeny při Add zavolání metody. Selhání překladu elementů zahrnutí a importu má za následek upozornění ověření schématu, a pokud pro XmlSchemaSet objekt není zadáno žádnéValidationEventHandler, nebudou tato upozornění hlášena.

  • Pokud se do objektu přidá schéma se stejným cílovým oborem názvů jako schéma, které již existuje v XmlSchemaSet objektu XmlSchemaSet, přidají se obě schémata.

    Poznámka

    Toto chování se liší od zastaralého XmlSchemaCollection objektu.

  • Metoda AddXmlSchemaSet objektu má možnost použít cílový obor názvů definovaný ve schématu, místo aby při zavolání metody musel být cílový obor názvů zadán jako parametr Add . Zadání null v parametru targetNamespaceAdd metody dává pokyn XmlSchemaSet k použití cílového oboru názvů definovaného ve schématu, jak je znázorněno v následujícím příkladu kódu.

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

Ve výše uvedeném null příkladu kódu je zadaný jako targetNamespace parametr Add metody . V důsledku toho targetNamespace se použije soubor definovaný v souboru books.xml. V tomto případě by byl výsledek volání Add metody identický, pokud http://www.contoso.com/books by byl zadán jako targetNamespace parametr .

  • Schéma W3C XML umožňuje zahrnout schémata bez cílového oboru názvů do schémat s definovaným cílovým oborem názvů. V tomto případě se schéma bez definovaného cílového oboru názvů převede do cílového oboru názvů zahrnutého schématu. Se zahrnutým schématem se zachází, jako by měl definovaný cílový obor názvů. Podobně schémata bez cílového oboru názvů mohou být přidány do objektu XmlSchemaSet a převedeny do cílového oboru názvů určeného Add metodou, jak je znázorněno v následujícím příkladu.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="A" type="xs:string" />
</xs:schema>

Pokud se výše uvedené schéma přidá do objektu XmlSchemaSet s cílovým oborem názvů http://www.contoso.com/new/targetnamespace (jak je znázorněno v následujícím kódu), považuje se za to, že cílový obor názvů deklarovaný ve schématu byl 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);
}

Platí pro

Add(String, XmlReader)

Zdroj:
XmlSchemaSet.cs
Zdroj:
XmlSchemaSet.cs
Zdroj:
XmlSchemaSet.cs

Přidá schéma jazyka XSD (XML Schema Definition Language) obsažené v objektu XmlReaderXmlSchemaSetdo .

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

Parametry

targetNamespace
String

Vlastnost schématu targetNamespace nebo null použít targetNamespace vlastnost zadanou ve schématu.

schemaDocument
XmlReader

Objekt XmlReader

Návraty

Objekt XmlSchema , pokud je schéma platné. Pokud schéma není platné a ValidationEventHandler je zadána hodnota , null vrátí se a vyvolá se příslušná událost ověření. V opačném XmlSchemaException případě je vyvolán objekt .

Výjimky

Schéma není platné.

Objekt XmlReader předaný jako parametr je null.

Příklady

Následující příklad kódu přidá schéma books.xsd obsažené v objektu XmlTextReader s cílovým oborem názvů http://www.contoso.com/books do 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");

Poznámky

Před přidání schématu do objektu XmlSchemaSetje nutné ho úspěšně předzpracovat. Předběžné zpracování provádí následující základní úlohy.

  1. Kontroluje se strukturální platnost schématu podle pravidel schématu XML W3C, ale schéma není plně ověřeno.

  2. Přeloží se odkazy na interní a externí součásti schématu. Všechna importovaná nebo zahrnutá schémata, která se úspěšně načtou, se také přidají do XmlSchemaSet. Importovaná schémata jsou přidána jako samostatné XmlSchema objekty a zahrnutá schémata jsou součástí včetně XmlSchema.

Při použití metody je potřeba vzít v úvahu následující důležité poznámky Add .

  • Úspěšně načtená schémata importovaná nebo zahrnutá schématy obsažená v objektu XmlReader jsou také přidána XmlSchemaSetdo .

  • XmlReader Pokud není umístěn na kořenovém elementu, je vyvolána, XmlSchemaException pokud aktuální položka není prvek. Pokud je aktuální položka element, xs:schema je dokument schématu načten do XmlSchemaSet. V opačném případě je vyvolán, XmlSchemaException protože schéma není platné.

  • XmlReader Pokud je umístěna nad sekvenci uzlů XML, přidá se pouze první uzel v sekvenci.

  • Pokud bylo schéma vytvořeno voláním XmlReader.Create metody, hodnota ProcessInlineSchema vlastnosti je ignorována, protože zpracování vloženého schématu není použito pro dokumenty schématu W3C XML.

  • Vlastnost XmlResolverXmlReader se nepoužívá k překladu odkazů na obory názvů nebo umístění schématu v elementech zahrnutí a importu. Místo toho se XmlResolver použije vlastnost .XmlSchemaSet

  • Metoda AddXmlSchemaSet objektu má možnost použít cílový obor názvů definovaný ve schématu, místo aby při zavolání metody musel být cílový obor názvů zadán jako parametr Add . Zadáním null metody nebo String.EmptyAdd dáváte pokyn XmlSchemaSet k použití cílového oboru názvů definovaného ve schématu. Příklad tohoto chování najdete v Add metodě .

Zbývající funkce této metody jsou stejné jako Add funkce metody .

Platí pro