Udostępnij za pośrednictwem


XmlSchemaSet.Add Metoda

Definicja

Dodaje schemat języka definicji schematu XML (XSD) do elementu XmlSchemaSet.

Przeciążenia

Add(XmlSchema)

Dodaje dane XmlSchema do elementu XmlSchemaSet.

Add(XmlSchemaSet)

Dodaje wszystkie schematy języka definicji schematu XML (XSD) w danym XmlSchemaSet pliku .XmlSchemaSet

Add(String, String)

Dodaje schemat języka definicji schematu XML (XSD) pod adresem URL określonym w pliku XmlSchemaSet.

Add(String, XmlReader)

Dodaje schemat języka definicji schematu XML (XSD) zawarty w elemecie XmlReader do elementu XmlSchemaSet.

Add(XmlSchema)

Źródło:
XmlSchemaSet.cs
Źródło:
XmlSchemaSet.cs
Źródło:
XmlSchemaSet.cs

Dodaje dane XmlSchema do elementu 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

Obiekt XmlSchema , który ma zostać dodany do obiektu XmlSchemaSet.

Zwraca

XmlSchema Obiekt, jeśli schemat jest prawidłowy. Jeśli schemat jest nieprawidłowy i ValidationEventHandler określony, null zostanie zwrócone i zostanie zgłoszone odpowiednie zdarzenie weryfikacji. W przeciwnym razie zgłaszany jest element XmlSchemaException .

Wyjątki

Schemat jest nieprawidłowy.

Obiekt XmlSchema przekazany jako parametr to null.

Uwagi

XmlSchema Jeśli obiekt już istnieje w metodzie XmlSchemaSet, Add nic nie robi.

Funkcjonalność tej metody jest identyczna z funkcją Add metody .

Dotyczy

Add(XmlSchemaSet)

Źródło:
XmlSchemaSet.cs
Źródło:
XmlSchemaSet.cs
Źródło:
XmlSchemaSet.cs

Dodaje wszystkie schematy języka definicji schematu XML (XSD) w danym XmlSchemaSet pliku .XmlSchemaSet

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

Obiekt XmlSchemaSet.

Wyjątki

Schemat w obiekcie XmlSchemaSet jest nieprawidłowy.

Obiekt XmlSchemaSet przekazany jako parametr to null.

Przykłady

Poniższy przykład kodu ilustruje dodawanie schematów do XmlSchemaSetelementu , a następnie dodanie XmlSchemaSet elementu do nowego XmlSchemaSet przy użyciu 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);

Uwagi

Aby można było dodać schemat do elementu XmlSchemaSet, należy go pomyślnie wstępnie przetworzyć. Wstępne przetwarzanie wykonuje następujące podstawowe zadania.

  1. Schemat jest sprawdzany pod kątem poprawności strukturalnej zgodnie z regułami schematu XML W3C, ale schemat nie jest w pełni weryfikowany.

  2. Odwołania do składników schematu wewnętrznego i zewnętrznego są rozwiązywane. Wszystkie zaimportowane lub dołączone schematy, które zostały pomyślnie pobrane, są również dodawane do programu XmlSchemaSet. Zaimportowane schematy są dodawane jako oddzielne XmlSchema obiekty, a dołączone schematy są częścią dołączania XmlSchema.

IsCompiled Jeśli właściwość do dodania XmlSchemaSet to true, wszystkie schematy w XmlSchemaSet pliku do dodania są dodawane do elementu XmlSchemaSet. IsCompiled Jeśli właściwość do dodania XmlSchemaSet to false, przed dodaniem każdy dodany schemat jest wstępnie przetworzony. Jeśli którykolwiek ze schematów nowo dodanych XmlSchemaSet nie może zostać wstępnie przetworzony, nie zostaną dodane żadne schematy. Zamiast tego XmlSchemaException zostanie zgłoszony błąd. W związku z tym dwa poniższe przykłady kodu nie są równoważne.

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

Poprzednie dwa przykłady kodu nie są równoważne. W pierwszym przykładzie, jeśli istnieje nieprawidłowy schemat i schemaSet1 jego IsCompiled właściwość jest ustawiona na falsewartość , żadne schematy nie są dodawane do elementu schemaSet. W drugim przykładzie można dodać wiele schematów przed schemaSet napotkaniu nieprawidłowego schematu i zgłaszany jest wyjątek.

Dotyczy

Add(String, String)

Źródło:
XmlSchemaSet.cs
Źródło:
XmlSchemaSet.cs
Źródło:
XmlSchemaSet.cs

Dodaje schemat języka definicji schematu XML (XSD) pod adresem URL określonym w pliku 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

Właściwość schematu targetNamespace lub null do użycia targetNamespace określonego w schemacie.

schemaUri
String

Adres URL określający schemat do załadowania.

Zwraca

XmlSchema Obiekt, jeśli schemat jest prawidłowy. Jeśli schemat jest nieprawidłowy i ValidationEventHandler określony, null zostanie zwrócone i zostanie zgłoszone odpowiednie zdarzenie weryfikacji. W przeciwnym razie zgłaszany jest element XmlSchemaException .

Wyjątki

Schemat jest nieprawidłowy.

Adres URL przekazany jako parametr to null lub Empty.

Przykłady

Poniższy przykład kodu dodaje http://www.contoso.com/books.xsd schemat z docelową przestrzenią nazw http://www.contoso.com/books do obiektu 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");

W przykładzie użyto books.xsd pliku jako danych wejściowych.

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

Uwagi

Aby można było dodać schemat do elementu XmlSchemaSet, należy go pomyślnie wstępnie przetworzyć. Wstępne przetwarzanie wykonuje następujące podstawowe zadania.

  1. Schemat jest sprawdzany pod kątem poprawności strukturalnej zgodnie z regułami schematu XML W3C, ale schemat nie jest w pełni weryfikowany.

  2. Odwołania do składników schematu wewnętrznego i zewnętrznego są rozwiązywane. Wszystkie zaimportowane lub dołączone schematy, które zostały pomyślnie pobrane, są również dodawane do programu XmlSchemaSet. Zaimportowane schematy są dodawane jako oddzielne XmlSchema obiekty, a dołączone schematy są częścią dołączania XmlSchema.

Poniżej przedstawiono ważne uwagi, które należy wziąć pod uwagę podczas korzystania z Add metody .

  • Dodanie schematu do obiektu XmlSchemaSet z tą samą docelową przestrzenią nazw i adresem URL lokalizacji schematu co schemat znajdujący się już w obiekcie XmlSchemaSet spowoduje zwrócenie oryginalnego obiektu schematu.

  • Po pomyślnym dodaniu nowego schematu do XmlSchemaSetIsCompiled obiektu właściwość XmlSchemaSet jest ustawiona na falsewartość .

  • Wszystkie elementy dołączania lub importowania napotkane w schemacie XML są rozpoznawane po wywołaniu Add metody. Nie można rozpoznać elementów dołączania i importowania powoduje wyświetlenie ostrzeżenia o weryfikacji schematu, a jeśli nie ValidationEventHandler określono żadnego XmlSchemaSet obiektu, to ostrzeżenie nie zostanie zgłoszone.

  • Jeśli schemat z tą samą docelową przestrzenią nazw co schemat, który już istnieje w obiekcie XmlSchemaSet , zostanie dodany do XmlSchemaSetprogramu , oba schematy zostaną dodane.

    Uwaga

    To zachowanie różni się od przestarzałego XmlSchemaCollection obiektu.

  • Metoda AddXmlSchemaSet ma możliwość używania docelowej przestrzeni nazw zdefiniowanej w schemacie, zamiast wymagać określenia docelowej przestrzeni nazw jako parametru podczas wywoływanej Add metody. Określenie null w parametrze targetNamespaceAdd metody powoduje XmlSchemaSet użycie docelowej przestrzeni nazw zdefiniowanej w schemacie, jak pokazano w poniższym przykładzie kodu.

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

W powyższym null przykładzie kodu jest określony jako targetNamespace parametr Add metody . W związku z tym targetNamespace jest używany zdefiniowany w pliku books.xml. W takim przypadku wynik wywołania Add metody byłby identyczny, gdyby http://www.contoso.com/books został określony jako targetNamespace parametr.

  • Schemat XML W3C umożliwia schematom bez docelowej przestrzeni nazw uwzględniane w schematach ze zdefiniowaną docelową przestrzenią nazw. W takim przypadku schemat bez zdefiniowanej docelowej przestrzeni nazw jest zmuszany do docelowej przestrzeni nazw dołączania schematu. Uwzględniony schemat jest traktowany tak, jakby miał zdefiniowaną docelową przestrzeń nazw. Podobnie schematy bez docelowej przestrzeni nazw można dodać do XmlSchemaSet przestrzeni nazw i coerced do docelowej przestrzeni nazw określonej przez metodę Add , jak pokazano w poniższym przykładzie.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="A" type="xs:string" />
</xs:schema>

Jeśli powyższy schemat zostanie dodany do obiektu XmlSchemaSet z docelową przestrzenią nazw http://www.contoso.com/new/targetnamespace (jak pokazano w poniższym kodzie), będzie traktowana tak, jakby docelowa przestrzeń nazw zadeklarowana w schemacie to 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);
}

Dotyczy

Add(String, XmlReader)

Źródło:
XmlSchemaSet.cs
Źródło:
XmlSchemaSet.cs
Źródło:
XmlSchemaSet.cs

Dodaje schemat języka definicji schematu XML (XSD) zawarty w elemecie XmlReader do elementu XmlSchemaSet.

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

Właściwość schematu targetNamespace lub null do użycia targetNamespace określonego w schemacie.

schemaDocument
XmlReader

Obiekt XmlReader.

Zwraca

XmlSchema Obiekt, jeśli schemat jest prawidłowy. Jeśli schemat jest nieprawidłowy i ValidationEventHandler określony, null zostanie zwrócone i zostanie zgłoszone odpowiednie zdarzenie weryfikacji. W przeciwnym razie zgłaszany jest element XmlSchemaException .

Wyjątki

Schemat jest nieprawidłowy.

Obiekt XmlReader przekazany jako parametr to null.

Przykłady

Poniższy przykład kodu dodaje schemat books.xsd zawarty w XmlTextReader obiekcie z docelową przestrzenią nazw http://www.contoso.com/books do obiektu 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");

Uwagi

Aby można było dodać schemat do elementu XmlSchemaSet, należy go pomyślnie wstępnie przetworzyć. Wstępne przetwarzanie wykonuje następujące podstawowe zadania.

  1. Schemat jest sprawdzany pod kątem poprawności strukturalnej zgodnie z regułami schematu XML W3C, ale schemat nie jest w pełni weryfikowany.

  2. Odwołania do składników schematu wewnętrznego i zewnętrznego są rozwiązywane. Wszystkie zaimportowane lub dołączone schematy, które zostały pomyślnie pobrane, są również dodawane do programu XmlSchemaSet. Zaimportowane schematy są dodawane jako oddzielne XmlSchema obiekty, a dołączone schematy są częścią dołączania XmlSchema.

Poniżej przedstawiono ważne uwagi, które należy wziąć pod uwagę podczas korzystania z Add metody .

  • Pomyślnie pobrano schematy zaimportowane lub dołączone przez schematy zawarte w elemecie XmlReader są również dodawane do elementu XmlSchemaSet.

  • Jeśli element XmlReader nie jest umieszczony na elemencie głównym, jest zgłaszany, XmlSchemaException chyba że bieżący element jest elementem. Jeśli bieżący element jest elementem xs:schema , dokument schematu jest odczytywany w XmlSchemaSetelemencie ; w przeciwnym razie element jest zgłaszany, XmlSchemaException ponieważ schemat jest nieprawidłowy.

  • Jeśli element XmlReader znajduje się w sekwencji węzłów XML, dodawany jest tylko pierwszy węzeł w sekwencji.

  • Jeśli schemat został utworzony na podstawie XmlReader.Create wywołania metody, wartość ProcessInlineSchema właściwości jest ignorowana, ponieważ wbudowane przetwarzanie schematu nie jest stosowane dla dokumentów schematu XML W3C.

  • Właściwość XmlResolver elementu XmlReader nie jest używana do rozpoznawania odwołań do przestrzeni nazw ani lokalizacji schematu w elementach dołączania i importowania. XmlResolver Zamiast tego jest używana właściwość .XmlSchemaSet

  • Metoda AddXmlSchemaSet ma możliwość używania docelowej przestrzeni nazw zdefiniowanej w schemacie, zamiast wymagać określenia docelowej przestrzeni nazw jako parametru podczas wywoływanej Add metody. Określenie null metody lub String.Empty do Add metody powoduje XmlSchemaSet użycie docelowej przestrzeni nazw zdefiniowanej w schemacie. Aby zapoznać się z przykładem tego zachowania, zobacz metodę Add .

Pozostałe funkcje tej metody są identyczne z funkcją Add metody .

Dotyczy