다음을 통해 공유


XmlSchemaSet.Add 메서드

정의

지정된 XSD(XML 스키마 정의 언어) 스키마를 XmlSchemaSet에 추가합니다.

오버로드

Add(XmlSchema)

지정된 XmlSchemaXmlSchemaSet에 추가합니다.

Add(XmlSchemaSet)

지정된 XmlSchemaSet에 포함된 모든 XSD(XML 스키마 정의 언어) 스키마를 XmlSchemaSet에 추가합니다.

Add(String, String)

지정된 URL에 있는 XSD(XML 스키마 정의 언어) 스키마를 XmlSchemaSet에 추가합니다.

Add(String, XmlReader)

XmlReader에 포함된 XSD(XML 스키마 정의 언어) 스키마를 XmlSchemaSet에 추가합니다.

Add(XmlSchema)

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

지정된 XmlSchemaXmlSchemaSet에 추가합니다.

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

매개 변수

schema
XmlSchema

XmlSchemaSet에 추가할 XmlSchema 개체입니다.

반환

스키마가 유효한 경우에는 XmlSchema 입니다. 스키마가 유효하지 않고 ValidationEventHandler가 지정된 경우에는 null이 반환되고 적절한 유효성 검사 이벤트가 발생합니다. 그렇지 않으면 XmlSchemaException이 throw됩니다.

예외

스키마가 유효하지 않은 경우

매개 변수로 전달된 XmlSchema 개체가 null입니다.

설명

개체가 XmlSchemaXmlSchemaSet이미 있는 경우 메서드는 Add 아무 것도 수행하지 않습니다.

이 메서드의 기능은 메서드의 기능과 Add 동일합니다.

적용 대상

Add(XmlSchemaSet)

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

지정된 XmlSchemaSet에 포함된 모든 XSD(XML 스키마 정의 언어) 스키마를 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)

매개 변수

schemas
XmlSchemaSet

XmlSchemaSet 개체

예외

XmlSchemaSet에 포함된 스키마가 유효하지 않은 경우

매개 변수로 전달된 XmlSchemaSet 개체가 null입니다.

예제

다음 코드 예제에서는 에 스키마를 추가한 다음 메서드를 XmlSchemaSet사용하여 Add 를 새 XmlSchemaSet 에 추가하는 XmlSchemaSet 방법을 보여 줍니다.

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

설명

스키마를 에 추가하려면 XmlSchemaSet성공적으로 전처리되어야 합니다. 전처리는 다음과 같은 기본 작업을 수행합니다.

  1. 스키마는 W3C XML 스키마의 규칙에 따라 구조적 유효성을 검사하지만 스키마의 유효성은 완전히 검사되지 않습니다.

  2. 내부 및 외부 스키마 구성 요소에 대한 참조가 확인됩니다. 성공적으로 검색된 모든 가져온 스키마 또는 포함된 스키마도 에 XmlSchemaSet추가됩니다. 가져온 스키마는 별도의 XmlSchema 개체로 추가되고 포함된 스키마는 를 포함한 XmlSchema의 일부로 만들어집니다.

추가할 의 XmlSchemaSet 속성이 IsCompiledtrue면 추가할 의 XmlSchemaSet 모든 스키마가 에 XmlSchemaSet추가됩니다. 추가할 의 XmlSchemaSet 속성이 IsCompiledfalse이면 추가된 각 스키마가 추가되기 전에 전처리됩니다. 새로 추가 XmlSchemaSet 된 스키마 중 일부가 전처리되지 않으면 스키마가 추가되지 않고 대신 이 XmlSchemaException throw됩니다. 따라서 다음 두 코드 예제는 동일하지 않습니다.

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

이전 두 코드 예제는 동일하지 않습니다. 첫 번째 예제에서 잘못된 스키마가 있고 schemaSet1 해당 IsCompiled 속성이 로 false설정된 경우 에 스키마가 추가 schemaSet되지 않습니다. 두 번째 예제에서는 잘못된 스키마가 발생하고 예외가 throw되기 전에 여러 스키마를 에 추가할 schemaSet 수 있습니다.

적용 대상

Add(String, String)

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

지정된 URL에 있는 XSD(XML 스키마 정의 언어) 스키마를 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

매개 변수

targetNamespace
String

스키마 targetNamespace 속성이거나, 스키마에 지정된 targetNamespace를 사용하면 null입니다.

schemaUri
String

로드할 스키마를 지정하는 URL입니다.

반환

스키마가 유효한 경우에는 XmlSchema 입니다. 스키마가 유효하지 않고 ValidationEventHandler가 지정된 경우에는 null이 반환되고 적절한 유효성 검사 이벤트가 발생합니다. 그렇지 않으면 XmlSchemaException이 throw됩니다.

예외

스키마가 유효하지 않은 경우

매개 변수로 전달된 URL이 null이거나 Empty인 경우

예제

다음 코드 예제에서는 의 대상 네임스페이 http://www.contoso.com/books.xsd 스가 http://www.contoso.com/books 있는 스키마를 에 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");

이 예제에서는 books.xsd 파일을 입력으로 사용합니다.

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

설명

스키마를 에 추가하려면 XmlSchemaSet성공적으로 전처리되어야 합니다. 전처리는 다음과 같은 기본 작업을 수행합니다.

  1. 스키마는 W3C XML 스키마의 규칙에 따라 구조적 유효성을 검사하지만 스키마의 유효성은 완전히 검사되지 않습니다.

  2. 내부 및 외부 스키마 구성 요소에 대한 참조가 확인됩니다. 성공적으로 검색된 모든 가져온 스키마 또는 포함된 스키마도 에 XmlSchemaSet추가됩니다. 가져온 스키마는 별도의 XmlSchema 개체로 추가되고 포함된 스키마는 를 포함한 XmlSchema의 일부로 만들어집니다.

다음은 메서드를 사용할 때 고려해야 할 중요한 참고 사항입니다 Add .

  • 에 이미 포함된 스키마 XmlSchemaSet 와 동일한 대상 네임스페이스 및 스키마 위치 URL을 사용하여 에 스키마를 XmlSchemaSet 추가하면 원래 스키마 개체가 반환됩니다.

  • 새 스키마가 에 성공적으로 추가 XmlSchemaSetIsCompiled 되면 의 XmlSchemaSet 속성이 로 false설정됩니다.

  • XML 스키마에서 발생하는 모든 포함 또는 가져오기 요소는 메서드가 호출될 때 Add 확인됩니다. 요소를 포함 및 가져오지 resolve 않으면 스키마 유효성 검사 경고가 발생하며 개체에 대해 XmlSchemaSet 지정되지 않은 경우 ValidationEventHandler 이러한 경고가 보고되지 않습니다.

  • 에 이미 있는 스키마와 동일한 대상 네임스페이스가 있는 스키마가 에 XmlSchemaSet 추가 XmlSchemaSet되면 두 스키마가 모두 추가됩니다.

    참고

    이 동작은 사용되지 않는 XmlSchemaCollection 개체와 다릅니다.

  • XmlSchemaSet 메서드는 Add 메서드를 호출할 때 Add 대상 네임스페이스를 매개 변수로 지정하지 않고 스키마에 정의된 대상 네임스페이스를 사용할 수 있습니다. 메서드의 Add 매개 변수에서 targetNamespace 를 지정하면 null 다음 코드 예제와 같이 스키마에 정의된 대상 네임스페이스를 사용하도록 에 지시 XmlSchemaSet 합니다.

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

위의 코드 예제에서 는 null 메서드에 대한 targetNamespace 매개 변수 Add 로 지정됩니다. 결과적으로 books.xml targetNamespace 파일에 정의된 가 사용됩니다. 이 경우 메서드를 호출한 Add 결과는 매개 변수로 targetNamespace 지정된 경우 http://www.contoso.com/books 동일합니다.

  • W3C XML 스키마를 사용하면 대상 네임스페이스가 없는 스키마를 대상 네임스페이스가 정의된 스키마에 포함할 수 있습니다. 이 경우 대상 네임스페이스가 정의되지 않은 스키마는 포함 스키마의 대상 네임스페이스로 강제 변환됩니다. 포함된 스키마는 대상 네임스페이스가 정의된 것처럼 처리됩니다. 마찬가지로 다음 예제와 같이 대상 네임스페이스가 없는 스키마를 에 추가하고 XmlSchemaSet 메서드에서 지정한 Add 대상 네임스페이스로 강제 변환할 수 있습니다.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="A" type="xs:string" />
</xs:schema>

위의 스키마가 대상 네임스페이스를 http://www.contoso.com/new/targetnamespace 사용하여 에 추가 XmlSchemaSet 되면(아래 코드와 같이) 스키마에 선언된 대상 네임스페이스가 인 것처럼 처리됩니다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);
}

적용 대상

Add(String, XmlReader)

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

XmlReader에 포함된 XSD(XML 스키마 정의 언어) 스키마를 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

매개 변수

targetNamespace
String

스키마 targetNamespace 속성이거나, 스키마에 지정된 targetNamespace를 사용하면 null입니다.

schemaDocument
XmlReader

XmlReader 개체

반환

스키마가 유효한 경우에는 XmlSchema 입니다. 스키마가 유효하지 않고 ValidationEventHandler가 지정된 경우에는 null이 반환되고 적절한 유효성 검사 이벤트가 발생합니다. 그렇지 않으면 XmlSchemaException이 throw됩니다.

예외

스키마가 유효하지 않은 경우

매개 변수로 전달된 XmlReader 개체가 null입니다.

예제

다음 코드 예제에서는 대상 네임스페이스를 http://www.contoso.com/booksXmlSchemaSet사용하여 에 XmlTextReader 포함된 books.xsd 스키마를 에 추가합니다.

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

설명

스키마를 에 추가하려면 XmlSchemaSet성공적으로 전처리되어야 합니다. 전처리는 다음과 같은 기본 작업을 수행합니다.

  1. 스키마는 W3C XML 스키마의 규칙에 따라 구조적 유효성을 검사하지만 스키마의 유효성은 완전히 검사되지 않습니다.

  2. 내부 및 외부 스키마 구성 요소에 대한 참조가 확인됩니다. 성공적으로 검색된 모든 가져온 스키마 또는 포함된 스키마도 에 XmlSchemaSet추가됩니다. 가져온 스키마는 별도의 XmlSchema 개체로 추가되고 포함된 스키마는 를 포함한 XmlSchema의 일부로 만들어집니다.

다음은 메서드를 사용할 때 고려해야 할 중요한 참고 사항입니다 Add .

  • 에 포함된 스키마에서 가져오거나 포함하는 스키마도 에 XmlReader 추가 XmlSchemaSet됩니다.

  • XmlReader 루트 요소에 배치되지 않으면 현재 항목이 요소가 XmlSchemaException 아닌 한 이 throw됩니다. 현재 항목이 요소이 xs:schema 면 스키마 문서가 로 XmlSchemaSet읽혀지고, XmlSchemaException 그렇지 않으면 스키마가 유효하지 않기 때문에 이 throw됩니다.

  • XmlReader XML 노드 시퀀스에 배치되면 시퀀스의 첫 번째 노드만 추가됩니다.

  • 메서드 호출에서 스키마를 XmlReader.Create 만든 경우 인라인 스키마 처리가 W3C XML 스키마 문서에 적용되지 않으므로 속성 값 ProcessInlineSchema 이 무시됩니다.

  • 의 속성은 XmlResolver 포함 및 가져오기 요소의 XmlReader 네임스페이스 또는 스키마 위치에 대한 참조를 resolve 데 사용되지 않습니다. 대신 의 XmlResolver 속성 XmlSchemaSet 이 사용됩니다.

  • XmlSchemaSet 메서드는 Add 메서드를 호출할 때 Add 대상 네임스페이스를 매개 변수로 지정하지 않고 스키마에 정의된 대상 네임스페이스를 사용할 수 있습니다. null 또는 String.Empty 를 메서드에 Add 지정하면 에서 스키마에 정의된 대상 네임스페이스를 사용하도록 지시 XmlSchemaSet 합니다. 이 동작의 예제는 메서드를 참조하세요 Add .

이 메서드의 나머지 기능은 메서드의 Add 기능과 동일합니다.

적용 대상