XmlSchemaSet.Add 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 XSD(XML 스키마 정의 언어) 스키마를 XmlSchemaSet에 추가합니다.
오버로드
Add(XmlSchema) |
지정된 XmlSchema를 XmlSchemaSet에 추가합니다. |
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
지정된 XmlSchema를 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
매개 변수
- schema
- XmlSchema
XmlSchemaSet에 추가할 XmlSchema 개체입니다.
반환
스키마가 유효한 경우에는 XmlSchema 입니다. 스키마가 유효하지 않고 ValidationEventHandler가 지정된 경우에는 null
이 반환되고 적절한 유효성 검사 이벤트가 발생합니다. 그렇지 않으면 XmlSchemaException이 throw됩니다.
예외
스키마가 유효하지 않은 경우
매개 변수로 전달된 XmlSchema 개체가 null
입니다.
설명
개체가 XmlSchema 에 XmlSchemaSet이미 있는 경우 메서드는 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성공적으로 전처리되어야 합니다. 전처리는 다음과 같은 기본 작업을 수행합니다.
스키마는 W3C XML 스키마의 규칙에 따라 구조적 유효성을 검사하지만 스키마의 유효성은 완전히 검사되지 않습니다.
내부 및 외부 스키마 구성 요소에 대한 참조가 확인됩니다. 성공적으로 검색된 모든 가져온 스키마 또는 포함된 스키마도 에 XmlSchemaSet추가됩니다. 가져온 스키마는 별도의 XmlSchema 개체로 추가되고 포함된 스키마는 를 포함한 XmlSchema의 일부로 만들어집니다.
추가할 의 XmlSchemaSet 속성이 IsCompiled 이true
면 추가할 의 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성공적으로 전처리되어야 합니다. 전처리는 다음과 같은 기본 작업을 수행합니다.
스키마는 W3C XML 스키마의 규칙에 따라 구조적 유효성을 검사하지만 스키마의 유효성은 완전히 검사되지 않습니다.
내부 및 외부 스키마 구성 요소에 대한 참조가 확인됩니다. 성공적으로 검색된 모든 가져온 스키마 또는 포함된 스키마도 에 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
입니다.
반환
스키마가 유효한 경우에는 XmlSchema 입니다. 스키마가 유효하지 않고 ValidationEventHandler가 지정된 경우에는 null
이 반환되고 적절한 유효성 검사 이벤트가 발생합니다. 그렇지 않으면 XmlSchemaException이 throw됩니다.
예외
스키마가 유효하지 않은 경우
매개 변수로 전달된 XmlReader 개체가 null
입니다.
예제
다음 코드 예제에서는 대상 네임스페이스를 http://www.contoso.com/books
XmlSchemaSet사용하여 에 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성공적으로 전처리되어야 합니다. 전처리는 다음과 같은 기본 작업을 수행합니다.
스키마는 W3C XML 스키마의 규칙에 따라 구조적 유효성을 검사하지만 스키마의 유효성은 완전히 검사되지 않습니다.
내부 및 외부 스키마 구성 요소에 대한 참조가 확인됩니다. 성공적으로 검색된 모든 가져온 스키마 또는 포함된 스키마도 에 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 기능과 동일합니다.
적용 대상
.NET