Schema 요소의 바인딩 지원
이 항목은 레거시 기술과 관련된 것입니다. 이제 XML Web services와 XML Web services 클라이언트는 다음을 사용하여 만들어야 합니다. Windows Communication Foundation.
.NET Framework에서는 <schema> 요소에 대한 바인딩 지원을 제공합니다.
<schema> 요소는 XML 스키마 문서의 루트 요소입니다.
설명
<schema> 요소는 XML 스키마 문서의 루트 요소입니다.
<schema> 요소의 특성 중에서 blockDefault, finalDefault, id 및 version 특성은 .NET Framework 코드 엔터티에 바인딩되지 않습니다. targetNamespace 특성은 인식되지만 attributeFormDefault 및 elementFormDefault 특성은 부분적으로만 인식됩니다. 다음 표를 참조하고 자세한 내용은 각 특성 항목을 참조하십시오.
TargetNamespace 특성
루트 <schema> 요소의 targetNamespace 특성은 스키마의 네임스페이스를 URI(Uniform Resource Identifier)로 지정합니다. Xsd.exe 도구는 <schema> 요소의 targetNamespace 특성과 여러 XML 관련 특성의 Namespace 속성을 서로 연관시킵니다.
XML 스키마 문서에서 소스 코드를 생성할 때 Xsd.exe는 targetNamespace 값을 다음과 같이 사용합니다.
생성된 형식 중에서 스키마의 데이터 형식과 일치하는 모든 형식에 대해 Xsd.exe는 System.Xml.Serialization.XmlTypeAttribute.Namespace 속성을 targetNamespace 값으로 설정합니다.
생성된 형식 중에서 스키마 호환 XML 문서의 루트로 나타날 수 있는 데이터 형식과 일치하는 모든 형식에 대해 Xsd.exe는 System.Xml.Serialization.XmlRootAttribute.Namespace 속성을 targetNamespace 값으로 설정합니다. 루트 <schema> 요소의 자식 요소로 전역적으로 선언된 <element> 요소에 사용되는 데이터 형식은 문서 루트로 나타날 수 있습니다.
어셈블리의 클래스 집합에서 XML 스키마 문서를 생성할 때 Xsd.exe는 특정 XML 관련 특성 클래스의 Namespace 속성에서 찾은 각각의 고유 값에 대해 고유한 targetNamespace 특성을 지정하여 XML 스키마 문서를 만듭니다. 이 속성은 다음과 같이 표시됩니다.
System.Xml.Serialization.XmlRootAttribute.Namespace
System.Xml.Serialization.XmlTypeAttribute.Namespace
AttributeFormDefault 특성
Xsd.exe 유틸리티는 전역 attributeFormDefault 특성을 지정하지 않은 상태로 XML 스키마를 생성합니다. 그리고 기존 스키마에서 이 특성을 발견하는 경우 재정의되지 않은 각 필드의 XmlAttributeAttribute에 대해 Form 속성을 설정합니다.
설명: AttributeFormDefault 특성
XML 스키마에서는 <schema> 요소의 자식으로 전역 선언된 모든 요소와 특성이 인스턴스 문서에 네임스페이스로 한정되어 표시되어야 합니다. <complexType> 정의 내에서 로컬로 선언된 요소와 특성의 경우 네임스페이스 한정자는 선택 사항입니다.
XML 스키마 문서에 선언된 모든 로컬 요소와 특성에 대한 네임스페이스 한정자를 제어하려면 루트 <schema> 요소의 elementFormDefault 및 attributeFormDefault 특성을 각각 사용하십시오. 이러한 모든 경우에 가능한 값은 qualified
및 unqualified
이며 기본값은 unqualified
입니다.
또한 로컬 <element> 또는 <attribute> 선언에 대해 form 특성을 사용하여 해당 요소나 특성에 대한 스키마 기본값을 재정의할 수 있습니다.
다음 표에서는 Xsd.exe에서 attributeFormDefault에 대해 지정할 수 있는 두 가지 항목인 qualified
와 unqualified
및 아무 것도 지정하지 않는 경우를 처리하는 방법을 보여 줍니다. XML 스키마 문서에서 소스 코드를 생성할 때 Xsd.exe는 각 XML 특성에 대해 public 필드를 만들고 이 필드에 .NET Framework 특성 XmlAttributeAttribute를 적용합니다.
가능한 attributeFormDefault 값 |
XSD에서 Xsd.exe에 의해 생성된 소스 |
동일한 소스에서 컴파일된 어셈블리에서 Xsd.exe에 의해 생성된 XSD |
|
특성과 일치하는 클래스 및 필드는 폼이 지정되지 않은 상태로 나타납니다. |
아무 것도 지정되지 않으면 기본값 |
|
특성과 일치하는 클래스 및 필드는 폼이 지정되지 않은 상태로 나타납니다. |
아무 것도 지정되지 않으면 기본값 |
|
로컬로 선언된 특성과 전역적으로 선언된 참조된 특성 둘 다와 일치하는 필드는 XmlAttribute 특성에 |
아무 것도 지정되지 않으면 기본값 또한 각 특성 선언은 |
XmlAttribute 선언에 전달된 매개 변수는 Form 속성을 설정합니다. XmlSchemaForm 열거형에서 가져올 수 있는 값은 다음과 같습니다.
XmlSchemaForm.Qualified
XmlSchemaForm.Unqualified
XmlSchemaForm.None: 기본값
XmlAttribute 매개 변수를 사용하면 원본 XSD 문서의 전역 설정이 소스 코드 및 생성된 XSD에서 XML 특성을 기준으로 지정됩니다. 전역 attributeFormDefault 특성은 항상 지정되지 않은 것으로 간주되고 기본값 unqualified
로 돌아갑니다.
예제: AttributeFormDefault 특성
attributeFormDefault="qualified"
가 지정된 입력 XML 스키마 문서:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified"
xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
<xsd:attribute name="version" type="xsd:string"/>
<xsd:complexType name="keyInfo">
<xsd:attribute ref="version" />
<xsd:attribute name="public" type="xsd:boolean" use="required"/>
</xsd:complexType>
<xsd:element name="key" type="keyInfo"/>
</xsd:schema>
앞의 XML 스키마 문서에서 생성된 C# 클래스:
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("key", Namespace="http://example.org/", IsNullable=false)]
public class keyInfo {
[System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public string version;
System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public bool @public;
}
앞의 C# 소스에서 컴파일된 어셈블리에서 생성된 XML 스키마 루트 <schema> 요소(특성 선언도 form 특성 없이 나타남):
<xs:schema xmlns:tns="http://example.org/" elementFormDefault="qualified" targetNamespace="http://example.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
</xs:schema>
ElementFormDefault 특성
Xsd.exe 유틸리티는 전역 elementFormDefault 특성을 "qualified"
로 설정한 상태로 XML 스키마를 생성합니다. 이 유틸리티가 기존 스키마에서 이 특성을 발견하는 경우 재정의되지 않은 각 필드의 XmlElementAttribute에 대해 Form 속성을 설정합니다.
예제: ElementFormDefault 특성
XML 스키마에서는 <schema> 요소의 자식으로 전역 선언된 모든 요소와 특성이 인스턴스 문서에 네임스페이스로 한정되어 표시되어야 합니다. <complexType> 정의 내에서 로컬로 선언된 요소와 특성의 경우 네임스페이스 한정자는 선택 사항입니다.
XML 스키마 문서에 선언된 모든 로컬 요소와 특성에 대한 네임스페이스 한정자를 제어하려면 루트 <schema> 요소의 elementFormDefault 및 attributeFormDefault 특성을 각각 사용하십시오. 이러한 모든 경우에 가능한 값은 qualified
및 unqualified
이며 기본값은 unqualified
입니다.
또한 로컬 <element> 또는 <attribute> 선언에 대해 form 특성을 사용하여 해당 요소나 특성에 대한 스키마 기본값을 재정의할 수 있습니다.
elementFormDefault의 기본값은 unqualified
이지만 .NET Framework는 unqualified
를 계속 사용하면서 결과적으로는 이 기본값을 qualified
로 취급합니다. 다음 표에서는 Xsd.exe에서 elementFormDefault에 대해 지정할 수 있는 두 가지 항목인 qualified
와 unqualified
및 아무 것도 지정하지 않는 경우를 처리하는 방법을 보여 줍니다. XML 스키마 문서에서 소스 코드를 생성할 때 Xsd.exe는 각 XML 요소에 대해 공용 필드를 만듭니다.
가능한 elementFormDefault 값 |
XSD에서 Xsd.exe에 의해 생성된 소스 |
동일한 소스에서 컴파일된 어셈블리에서 Xsd.exe에 의해 생성된 XSD |
|
요소와 일치하는 클래스 및 필드는 폼이 지정되지 않은 상태로 나타납니다. |
|
|
요소와 일치하는 클래스 및 필드는 폼이 지정되지 않은 상태로 나타납니다. |
|
|
로컬로 선언된 요소와 일치하는 필드는 XmlElement 특성에 |
또한 원래 로컬로 선언되었던 각 요소에는 |
XmlElement 선언에 전달된 매개 변수는 Form 속성을 설정합니다. XmlSchemaForm 열거형에서 가져올 수 있는 값은 다음과 같습니다.
XmlSchemaForm.Qualified
XmlSchemaForm.Unqualified
XmlSchemaForm.None: 기본값
XmlElement 매개 변수를 사용하면 원본 XSD 문서의 전역 설정이 소스 코드 및 생성된 XSD에서 XML 요소를 기준으로 지정됩니다. 전역 elementFormDefault 특성 값은 항상 qualified
로 간주됩니다.
예제: ElementFormDefault 특성
elementFormDefault="unqualified"
가 지정된 입력 XML 스키마 문서:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="unqualified">
<xsd:element name="version" type="xsd:string"/>
<xsd:complexType name="keyInfo">
<xsd:sequence>
<xsd:element ref="version" />
<xsd:element name="public" type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="key" type="keyInfo"/>
</xsd:schema>
앞의 XML 스키마 문서에서 생성된 C# 클래스:
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("key", Namespace="http://example.org/", IsNullable=false)]
public class keyInfo {
public string version;
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public bool @public;
}
앞의 C# 소스에서 컴파일된 어셈블리에서 생성된 XML 스키마 문서:
<xs:schema xmlns:tns="http://example.org/" elementFormDefault="qualified" targetNamespace="http://example.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="key" type="tns:keyInfo" />
<xs:complexType name="keyInfo">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="version" type="xs:string" />
<xs:element minOccurs="1" maxOccurs="1" form="unqualified" name="public" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
</xs:schema>
가능한 특성 | 바인딩 지원 |
---|---|
attributeFormDefault |
.NET Framework는 기본값 앞에서 설명한 AttributeFormDefault 특성 단원을 참조하십시오. |
blockDefault |
<schema> 요소의 blockDefault 특성은 <complexType> 및 <element> 요소의 block 특성에 대해 기본값을 제공합니다. Xsd.exe 도구는 <schema> 요소의 blockDefault 특성과 관련 요소의 block 특성을 무시합니다. |
elementFormDefault |
결과적으로 .NET Framework는 다른 기본값 앞에서 설명한 ElementFormDefault 특성 단원을 참조하십시오. |
finalDefault |
<schema> 요소의 finalDefault 특성은 특정 요소의 final 특성에 대한 기본값을 제공합니다. Xsd.exe 도구는 <schema> 요소의 finalDefault 특성과 관련 요소의 final 특성을 무시합니다. |
id |
Xsd.exe 유틸리티는 고유 식별자를 제공하기 위한 id 특성을 무시합니다. |
xml:lang |
Xsd.exe는 루트 <schema> 요소에 사용되며 네임스페이스 http://www.w3.org/XML/1198에 있는 lang 특성을 무시합니다. |
targetNamespace |
Xsd.exe 도구는 <schema> 요소의 targetNamespace 특성과 여러 XML 관련 특성의 Namespace 속성을 서로 연관시킵니다. 사용되는 특성은 변환 방향에 따라 다릅니다. 앞에서 설명한 TargetNamespace 특성 단원을 참조하십시오. |
version |
설명서에는 version 특성을 사용할 수 있습니다. Xsd.exe 도구는 이 특성을 무시합니다. |
가능한 부모 요소: 없음(루트 요소)
가능한 자식 요소: <annotation>, <attribute>, <attributeGroup>, <complexType>, <element>, <group>, <import>, <include>, <notation>, <redefine>, <simpleType>