XmlSchemaSet.Add Methode

Definition

Fügt dem XmlSchemaSet das angegebene XSD-Schema (XML Schema Definition Language) hinzu.

Überlädt

Add(XmlSchema)

Fügt dem XmlSchema das angegebene XmlSchemaSet hinzu.

Add(XmlSchemaSet)

Fügt dem XmlSchemaSet alle XSD-Schemas (XML Schema Definition Language) im vorhandenen XmlSchemaSet hinzu.

Add(String, String)

Fügt das XSD-Schema (XML Schema Definition Language) bei der für den XmlSchemaSet angegebenen URL hinzu.

Add(String, XmlReader)

Fügt das im XmlReader enthaltene XSD-Schema (XML Schema Definition Language) XmlSchemaSet hinzu.

Add(XmlSchema)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs

Fügt dem XmlSchema das angegebene XmlSchemaSet hinzu.

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

Parameter

schema
XmlSchema

Das dem XmlSchemaSet-Objekt hinzuzufügende XmlSchema.

Gibt zurück

Ein XmlSchema-Objekt, wenn das Schema gültig ist. Wenn das Schema nicht gültig ist und ein ValidationEventHandler angegeben ist, wird null zurückgegeben und das entsprechende Validierungsereignis ausgelöst. Andernfalls wird eine XmlSchemaException ausgelöst.

Ausnahmen

Das Schema ist ungültig.

Das als Parameter übergebene XmlSchema-Objekt ist null.

Hinweise

Wenn das XmlSchema Objekt bereits in vorhanden ist, tut die AddXmlSchemaSet-Methode nichts.

Die Funktionalität dieser Methode ist identisch mit der der Add -Methode.

Gilt für:

Add(XmlSchemaSet)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs

Fügt dem XmlSchemaSet alle XSD-Schemas (XML Schema Definition Language) im vorhandenen XmlSchemaSet hinzu.

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)

Parameter

schemas
XmlSchemaSet

Das XmlSchemaSet-Objekt.

Ausnahmen

Ein Schema im XmlSchemaSet ist ungültig.

Das als Parameter übergebene XmlSchemaSet-Objekt ist null.

Beispiele

Im folgenden Codebeispiel wird das Hinzufügen von Schemas zu einem XmlSchemaSetveranschaulicht, und dann das hinzufügen zu XmlSchemaSet einem neuen XmlSchemaSet mithilfe der Add -Methode.

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

Hinweise

Bevor ein Schema zu einem XmlSchemaSethinzugefügt werden kann, muss es erfolgreich vorverarbeitet werden. Die Vorverarbeitung führt die folgenden grundlegenden Aufgaben aus.

  1. Das Schema wird gemäß den Regeln des W3C-XML-Schemas auf strukturelle Gültigkeit überprüft, das Schema wird jedoch nicht vollständig überprüft.

  2. Verweise auf interne und externe Schemakomponenten werden aufgelöst. Alle importierten oder eingeschlossenen Schemas, die erfolgreich abgerufen werden, werden ebenfalls hinzugefügt XmlSchemaSet. Importierte Schemas werden als separate XmlSchema Objekte hinzugefügt, und enthaltene Schemas werden teil des eingeschlossen XmlSchema.

Wenn die IsCompiled -Eigenschaft des XmlSchemaSet hinzuzufügenden ist, werden truealle Schemas in dem XmlSchemaSet hinzugefügt werden, der XmlSchemaSethinzugefügt werden. Wenn die IsCompiled -Eigenschaft des XmlSchemaSet hinzuzufügenden ist, wird falsejedes hinzugefügte Schema vor dem Hinzufügen vorverarbeitet. Wenn eines der Schemas im neu hinzugefügten XmlSchemaSet nicht vorverarbeitet werden kann, werden keine Schemas hinzugefügt. Stattdessen wird ein XmlSchemaException ausgelöst. Daher sind die folgenden beiden Codebeispiele nicht gleichwertig.

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

Die beiden vorherigen Codebeispiele sind nicht gleichwertig. Wenn im ersten Beispiel ein ungültiges schemaSet1 Schema vorhanden ist und dessen IsCompiled Eigenschaft auf falsefestgelegt ist, werden keine Schemas hinzugefügt schemaSet. Im zweiten Beispiel kann eine Reihe von Schemas hinzugefügt schemaSet werden, bevor ein ungültiges Schema gefunden und eine Ausnahme ausgelöst wird.

Gilt für:

Add(String, String)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs

Fügt das XSD-Schema (XML Schema Definition Language) bei der für den XmlSchemaSet angegebenen URL hinzu.

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

Parameter

targetNamespace
String

Die Schema-targetNamespace-Eigenschaft oder null, um den im Schema angegebenen targetNamespace zu verwenden.

schemaUri
String

Die URL, die das zu ladende Schema angibt.

Gibt zurück

Ein XmlSchema-Objekt, wenn das Schema gültig ist. Wenn das Schema nicht gültig ist und ein ValidationEventHandler angegeben ist, wird null zurückgegeben und das entsprechende Validierungsereignis ausgelöst. Andernfalls wird eine XmlSchemaException ausgelöst.

Ausnahmen

Das Schema ist ungültig.

Die URL, die als Parameter übergeben wurde, entspricht null oder Empty.

Beispiele

Im folgenden Codebeispiel wird das http://www.contoso.com/books.xsd Schema mit dem Zielnamespace von http://www.contoso.com/books hinzugefügt 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");

In diesem Beispiel wird die Datei books.xsd als Eingabe verwendet.

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

Hinweise

Bevor ein Schema zu einem XmlSchemaSethinzugefügt werden kann, muss es erfolgreich vorverarbeitet werden. Die Vorverarbeitung führt die folgenden grundlegenden Aufgaben aus.

  1. Das Schema wird gemäß den Regeln des W3C-XML-Schemas auf strukturelle Gültigkeit überprüft, das Schema wird jedoch nicht vollständig überprüft.

  2. Verweise auf interne und externe Schemakomponenten werden aufgelöst. Alle importierten oder eingeschlossenen Schemas, die erfolgreich abgerufen werden, werden ebenfalls hinzugefügt XmlSchemaSet. Importierte Schemas werden als separate XmlSchema Objekte hinzugefügt, und enthaltene Schemas werden teil des eingeschlossen XmlSchema.

Die folgenden wichtigen Hinweise sollten bei der Verwendung der Add -Methode berücksichtigt werden.

  • Das Hinzufügen eines Schemas zu dem XmlSchemaSet mit demselben Zielnamespace und derselben Schemaspeicherort-URL wie ein Schema, das bereits darin enthalten ist, XmlSchemaSet gibt das ursprüngliche Schemaobjekt zurück.

  • Wenn ein neues Schema erfolgreich hinzugefügt XmlSchemaSetwurde, wird die IsCompiled -Eigenschaft von XmlSchemaSet auf falsefestgelegt.

  • Alle Include- oder Importelemente, die in einem XML-Schema gefunden werden, werden aufgelöst, wenn die Add -Methode aufgerufen wird. Fehler beim Auflösen von Include- und Importelementen führen zu einer Schemavalidierungswarnung. Wenn für das XmlSchemaSet Objekt keine ValidationEventHandler Angabe erfolgt ist, wird diese Warnung nicht gemeldet.

  • Wenn ein Schema mit demselben Zielnamespace wie ein Schema hinzugefügt XmlSchemaSetwird, das bereits in vorhanden XmlSchemaSet ist, werden beide Schemas hinzugefügt.

    Hinweis

    Dieses Verhalten unterscheidet sich vom veralteten XmlSchemaCollection Objekt.

  • Die Add -Methode von XmlSchemaSet hat die Möglichkeit, den in einem Schema definierten Zielnamespace zu verwenden, anstatt den Zielnamespace als Parameter anzugeben, wenn die Add Methode aufgerufen wird. Die Angabe null im targetNamespace -Parameter der Add -Methode weist den an, den XmlSchemaSet im Schema definierten Zielnamespace zu verwenden, wie im folgenden Codebeispiel veranschaulicht.

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

Im obigen null Codebeispiel wird als Parameter für die targetNamespaceAdd -Methode angegeben. Daher wird die targetNamespace in der books.xml-Datei definierte verwendet. In diesem Fall wäre das Ergebnis des Aufrufens der Add -Methode identisch, wenn http://www.contoso.com/books als targetNamespace Parameter angegeben worden wäre.

  • Das W3C-XML-Schema ermöglicht die Einbeziehung von Schemas ohne Zielnamespace in Schemas mit definiertem Zielnamespace. In diesem Fall wird das Schema ohne definierten Zielnamespace in den Zielnamespace des einschließenden Schemas eingebunden. Das enthaltene Schema wird so behandelt, als hätte es diesen Zielnamespace definiert. Ebenso können Schemas ohne Zielnamespace dem XmlSchemaSet hinzugefügt und dem von der Add -Methode angegebenen Zielnamespace zugeordnet werden, wie im folgenden Beispiel veranschaulicht.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="A" type="xs:string" />
</xs:schema>

Wenn das obige Schema mit dem XmlSchemaSet Zielnamespace http://www.contoso.com/new/targetnamespace hinzugefügt wird (wie im code unten gezeigt), wird es so behandelt, als ob der im Schema deklarierte Zielnamespace wäre 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);
}

Gilt für:

Add(String, XmlReader)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs

Fügt das im XmlReader enthaltene XSD-Schema (XML Schema Definition Language) XmlSchemaSet hinzu.

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

Parameter

targetNamespace
String

Die Schema-targetNamespace-Eigenschaft oder null, um den im Schema angegebenen targetNamespace zu verwenden.

schemaDocument
XmlReader

Das XmlReader-Objekt.

Gibt zurück

Ein XmlSchema-Objekt, wenn das Schema gültig ist. Wenn das Schema nicht gültig ist und ein ValidationEventHandler angegeben ist, wird null zurückgegeben und das entsprechende Validierungsereignis ausgelöst. Andernfalls wird eine XmlSchemaException ausgelöst.

Ausnahmen

Das Schema ist ungültig.

Das als Parameter übergebene XmlReader-Objekt ist null.

Beispiele

Im folgenden Codebeispiel wird das in XmlTextReader enthaltene books.xsd-Schema mit einem Zielnamespace von http://www.contoso.com/books hinzugefügt 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");

Hinweise

Bevor ein Schema zu einem XmlSchemaSethinzugefügt werden kann, muss es erfolgreich vorverarbeitet werden. Die Vorverarbeitung führt die folgenden grundlegenden Aufgaben aus.

  1. Das Schema wird gemäß den Regeln des W3C-XML-Schemas auf strukturelle Gültigkeit überprüft, das Schema wird jedoch nicht vollständig überprüft.

  2. Verweise auf interne und externe Schemakomponenten werden aufgelöst. Alle importierten oder eingeschlossenen Schemas, die erfolgreich abgerufen werden, werden ebenfalls hinzugefügt XmlSchemaSet. Importierte Schemas werden als separate XmlSchema Objekte hinzugefügt, und enthaltene Schemas werden teil des eingeschlossen XmlSchema.

Die folgenden wichtigen Hinweise sollten bei der Verwendung der Add -Methode berücksichtigt werden.

  • Erfolgreich abgerufene Schemas, die von den in XmlReader den enthaltenen Schemas importiert oder eingeschlossen wurden, werden ebenfalls hinzugefügt XmlSchemaSet.

  • Wenn der XmlReader nicht im Stammelement positioniert ist, wird ein XmlSchemaException ausgelöst, es sei denn, das aktuelle Element ist ein Element. Wenn das aktuelle Element ein xs:schema Element ist, wird das Schemadokument in das XmlSchemaSeteingelesen. Andernfalls wird ein XmlSchemaException ausgelöst, weil das Schema ungültig ist.

  • Wenn der XmlReader über einer Sequenz von XML-Knoten positioniert ist, wird nur der erste Knoten in der Sequenz hinzugefügt.

  • Wenn das Schema aus einem XmlReader.Create Methodenaufruf erstellt wurde, wird der Wert der -Eigenschaft ignoriert, da die ProcessInlineSchema Inlineschemaverarbeitung für W3C-XML-Schemadokumente nicht angewendet wird.

  • Die XmlResolver -Eigenschaft von XmlReader wird nicht verwendet, um Verweise auf Namespaces oder Schemapositionen in Include- und Importelementen aufzulösen. Stattdessen wird die XmlResolver -Eigenschaft von XmlSchemaSet verwendet.

  • Die Add -Methode von XmlSchemaSet hat die Möglichkeit, den in einem Schema definierten Zielnamespace zu verwenden, anstatt den Zielnamespace als Parameter anzugeben, wenn die Add Methode aufgerufen wird. Die Angabe null oder für die Add -Methode weist den an, den XmlSchemaSet im Schema definierten Zielnamespace String.Empty zu verwenden. Ein Beispiel für dieses Verhalten finden Sie in der Add -Methode.

Die restliche Funktionalität dieser Methode ist identisch mit der der Add -Methode.

Gilt für: