XmlSchemaSet.Add Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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)
- Quelle:
- XmlSchemaSet.cs
- Quelle:
- XmlSchemaSet.cs
- Quelle:
- 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)
- Quelle:
- XmlSchemaSet.cs
- Quelle:
- XmlSchemaSet.cs
- Quelle:
- 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.
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.
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 true
alle Schemas in dem XmlSchemaSet hinzugefügt werden, der XmlSchemaSethinzugefügt werden. Wenn die IsCompiled -Eigenschaft des XmlSchemaSet hinzuzufügenden ist, wird false
jedes 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 false
festgelegt 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)
- Quelle:
- XmlSchemaSet.cs
- Quelle:
- XmlSchemaSet.cs
- Quelle:
- 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.
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.
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
false
festgelegt.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
imtargetNamespace
-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 targetNamespace
Add -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)
- Quelle:
- XmlSchemaSet.cs
- Quelle:
- XmlSchemaSet.cs
- Quelle:
- 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.
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.
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.
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.