다음을 통해 공유


Schema 요소의 바인딩 지원

이 항목은 레거시 기술과 관련된 것입니다. 이제 XML Web services와 XML Web services 클라이언트는 다음을 사용하여 만들어야 합니다. Windows Communication Foundation.

.NET Framework에서는 <schema> 요소에 대한 바인딩 지원을 제공합니다.

<schema> 요소는 XML 스키마 문서의 루트 요소입니다.

설명

<schema> 요소는 XML 스키마 문서의 루트 요소입니다.

<schema> 요소의 특성 중에서 blockDefault, finalDefault, idversion 특성은 .NET Framework 코드 엔터티에 바인딩되지 않습니다. targetNamespace 특성은 인식되지만 attributeFormDefaultelementFormDefault 특성은 부분적으로만 인식됩니다. 다음 표를 참조하고 자세한 내용은 각 특성 항목을 참조하십시오.

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 스키마 문서를 만듭니다. 이 속성은 다음과 같이 표시됩니다.

AttributeFormDefault 특성

Xsd.exe 유틸리티는 전역 attributeFormDefault 특성을 지정하지 않은 상태로 XML 스키마를 생성합니다. 그리고 기존 스키마에서 이 특성을 발견하는 경우 재정의되지 않은 각 필드의 XmlAttributeAttribute에 대해 Form 속성을 설정합니다.

설명: AttributeFormDefault 특성

XML 스키마에서는 <schema> 요소의 자식으로 전역 선언된 모든 요소와 특성이 인스턴스 문서에 네임스페이스로 한정되어 표시되어야 합니다. <complexType> 정의 내에서 로컬로 선언된 요소와 특성의 경우 네임스페이스 한정자는 선택 사항입니다.

XML 스키마 문서에 선언된 모든 로컬 요소와 특성에 대한 네임스페이스 한정자를 제어하려면 루트 <schema> 요소의 elementFormDefaultattributeFormDefault 특성을 각각 사용하십시오. 이러한 모든 경우에 가능한 값은 qualifiedunqualified이며 기본값은 unqualified입니다.

또한 로컬 <element> 또는 <attribute> 선언에 대해 form 특성을 사용하여 해당 요소나 특성에 대한 스키마 기본값을 재정의할 수 있습니다.

다음 표에서는 Xsd.exe에서 attributeFormDefault에 대해 지정할 수 있는 두 가지 항목인 qualifiedunqualified 및 아무 것도 지정하지 않는 경우를 처리하는 방법을 보여 줍니다. XML 스키마 문서에서 소스 코드를 생성할 때 Xsd.exe는 각 XML 특성에 대해 public 필드를 만들고 이 필드에 .NET Framework 특성 XmlAttributeAttribute를 적용합니다.

가능한 attributeFormDefault 값

XSD에서 Xsd.exe에 의해 생성된 소스

동일한 소스에서 컴파일된 어셈블리에서 Xsd.exe에 의해 생성된 XSD

attributeFormDefault="unqualified"

특성과 일치하는 클래스 및 필드는 폼이 지정되지 않은 상태로 나타납니다.

아무 것도 지정되지 않으면 기본값 attributeFormDefault="unqualified"로 돌아갑니다.

Unspecified

특성과 일치하는 클래스 및 필드는 폼이 지정되지 않은 상태로 나타납니다.

아무 것도 지정되지 않으면 기본값 attributeFormDefault="unqualified"로 돌아갑니다.

attributeFormDefault="qualified"

로컬로 선언된 특성과 전역적으로 선언된 참조된 특성 둘 다와 일치하는 필드는 XmlAttribute 특성에 Form=XmlSchemaForm.Qualified가 전달된 상태로 나타납니다.

아무 것도 지정되지 않으면 기본값 attributeFormDefault="unqualified"로 돌아갑니다.

또한 각 특성 선언은 form="qualified"를 지정합니다. 여기에는 전역적으로 선언된 참조된 특성이 포함됩니다.

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> 요소의 elementFormDefaultattributeFormDefault 특성을 각각 사용하십시오. 이러한 모든 경우에 가능한 값은 qualifiedunqualified이며 기본값은 unqualified입니다.

또한 로컬 <element> 또는 <attribute> 선언에 대해 form 특성을 사용하여 해당 요소나 특성에 대한 스키마 기본값을 재정의할 수 있습니다.

elementFormDefault의 기본값은 unqualified이지만 .NET Framework는 unqualified를 계속 사용하면서 결과적으로는 이 기본값을 qualified로 취급합니다. 다음 표에서는 Xsd.exe에서 elementFormDefault에 대해 지정할 수 있는 두 가지 항목인 qualifiedunqualified 및 아무 것도 지정하지 않는 경우를 처리하는 방법을 보여 줍니다. XML 스키마 문서에서 소스 코드를 생성할 때 Xsd.exe는 각 XML 요소에 대해 공용 필드를 만듭니다.

가능한 elementFormDefault 값

XSD에서 Xsd.exe에 의해 생성된 소스

동일한 소스에서 컴파일된 어셈블리에서 Xsd.exe에 의해 생성된 XSD

elementFormDefault="qualified"

요소와 일치하는 클래스 및 필드는 폼이 지정되지 않은 상태로 나타납니다.

elementFormDefault="qualified"

Unspecified

요소와 일치하는 클래스 및 필드는 폼이 지정되지 않은 상태로 나타납니다.

elementFormDefault="qualified"

elementFormDefault="unqualified"

로컬로 선언된 요소와 일치하는 필드는 XmlElement 특성에 Form=XmlSchemaForm.Unqualified가 무시된 상태로 나타납니다. 전역적으로 선언된 참조된 요소와 일치하는 필드는 폼이 지정되지 않은 상태로 나타납니다.

elementFormDefault="qualified"

또한 원래 로컬로 선언되었던 각 요소에는 form="unqualified"가 사용되며 원래 전역적으로 선언되었던 요소는 form 특성 없이 로컬로 나타납니다.

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는 기본값 unqualified를 인식할 수 있습니다. Xsd.exe 도구는 재정의되지 않은 각 필드의 XmlAttributeAttribute에 대해 Form 속성을 설정하여 각 필드 기준으로 qualified 값을 변환합니다.

앞에서 설명한 AttributeFormDefault 특성 단원을 참조하십시오.

blockDefault

<schema> 요소의 blockDefault 특성은 <complexType><element> 요소의 block 특성에 대해 기본값을 제공합니다.

Xsd.exe 도구는 <schema> 요소의 blockDefault 특성과 관련 요소의 block 특성을 무시합니다.

elementFormDefault

결과적으로 .NET Framework는 다른 기본값 qualified를 사용합니다. Xsd.exe 도구는 항상 elementFormDefault="qualified"를 지정하여 <schema> 요소를 생성합니다. Xsd.exe 도구는 재정의되지 않은 각 필드의 XmlElementAttribute에 대해 Form 속성을 설정하여 각 필드 기준으로 unqualified 값을 변환합니다.

앞에서 설명한 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>

참고 항목

참조

XmlSchema