Value 특성의 바인딩 지원

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

.NET Framework에서는 value 특성에 대한 부분 바인딩 지원을 제공합니다.

Xsd.exe 도구는 문자열 기반 형식에 열거형 제한이 적용된 경우 <enumeration> 패싯의 value 특성을 .NET Framework enum 멤버로 변환합니다. 그렇지 않으면 XML 스키마 패싯과 .NET Framework의 클래스 정의 간 바인딩이 없습니다.

설명

XML 스키마 정의 언어에서는 기본 단순 형식의 값을 제한하여 새 단순 형식을 파생시키기 위한 다양한 메커니즘을 제공합니다. 이러한 제약 조건을 패싯이라고 합니다. 이러한 제약 조건은 <simpleType>이나 <simpleContent> 정의에서 <restriction> 요소의 자식으로 지정되며 XPath simpleType/restriction/facetName을 통해 찾을 수 있습니다. 여기서 facetName은 특정 패싯을 나타냅니다. 패싯 요소의 value 특성은 패싯에 적합한 값을 지정합니다.

문자열 기반 열거형의 value 특성

Xsd.exe 도구는 문자열 기반 데이터 형식에 열거형 제한이 적용된 경우 <enumeration> 패싯의 value 특성을 .NET Framework enum 멤버로 변환합니다. 데이터 형식은 <restriction> 요소의 base 특성을 통해 지정됩니다. Xsd.exe 도구에서 문자열로 해석하는 기본 제공 XML 스키마 데이터 형식의 목록을 보려면 <enumeration> 요소를 참조하십시오.

열거형 값은 유효한 상수 이름으로 한정되거나 Xsd.exe에 의해 상수 이름으로 변환되어야 합니다. 다음 열거형 값을 예로 들 수 있습니다.

<xsd:enumeration value="IRISH CREAM" />

이 값은 다음 enum 멤버로 변환됩니다.

[System.Xml.Serialization.XmlEnumAttribute("IRISH CREAM")]
IRISHCREAM,

유효한 상수 이름을 생성하기 위해 공백 하나가 제거되며 XmlEnumAttribute 특성이 enum 멤버에 적용됩니다. 이 특성 매개 변수는 해당 enum 값에 사용되는 XML 스키마 열거형 값을 변경합니다. 기본값은 enum 값 자체이며 이 경우에는 IRISHCREAM입니다. 이미 유효한 상수 이름으로 한정된 XML 스키마 열거형 값의 경우, XmlEnum 특성이 생략됩니다.

.NET Framework는 숫자 XSD 열거형을 enum 정의로 변환하지 않지만 해당 값이 숫자로 나타나는 문자열 XSD 열거형은 변환합니다. 다음 단순 형식 정의는 base="xsd:string"을 지정하므로 enum 형식에 바인딩됩니다.

<xsd:simpleType name="Primes">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="2" />
        <xsd:enumeration value="3" />
        <xsd:enumeration value="5" />
        <xsd:enumeration value="7" />
        <xsd:enumeration value="11" />
        <xsd:enumeration value="13" />
        <xsd:enumeration value="17" />
    </xsd:restriction>
</xsd:simpleType>

다음 enum 형식이 생성됩니다.

public enum Primes { 
    [System.Xml.Serialization.XmlEnumAttribute("2")]
    Item2,
    [System.Xml.Serialization.XmlEnumAttribute("3")]
    Item3,
    [System.Xml.Serialization.XmlEnumAttribute("5")]
    Item5,
    [System.Xml.Serialization.XmlEnumAttribute("7")]
    Item7,
    [System.Xml.Serialization.XmlEnumAttribute("11")]
    Item11,
    [System.Xml.Serialization.XmlEnumAttribute("13")]
    Item13,
    [System.Xml.Serialization.XmlEnumAttribute("17")]
    Item17,
}

역시 XmlEnum 특성을 사용하여 xsd:enumeration 값의 기본 바인딩을 XML 스키마 열거형 값으로 재정의합니다.

value 특성이 사용되는 다른 경우

패싯을 제외하고 .NET Framework의 클래스 정의와 XML 스키마 패싯을 사용하는 단순 형식 제한 사이에는 바인딩이 없습니다. 이것은 문자열 기반 열거형을 제외하고 다음을 의미합니다.

  • XML 스키마 문서에서 소스 코드를 생성하는 경우 Xsd.exe는 단순 형식에 대한 제한을 무시하고 단지 기본 단순 형식에 해당하는 .NET Framework 형식을 생성합니다.

  • XmlSerializer 클래스는 개체를 XML로 serialize하고 XML에서 deserialize할 때 이러한 제한을 무시합니다.

스키마 개체 모델의 경우 System.Xml.Schema 네임스페이스는 Value 속성이 지정된 추상 XmlSchemaFacet 클래스를 포함합니다. 가능한 각 제한 패싯에 대해 XmlSchemaFacet에서 파생 형식을 프로그래밍 방식으로 사용하여 패싯을 통해 제한하는 스키마 개체 모델을 만들 수 있습니다.

포함할 수 있는 요소: 모든 제한 패싯

참고 항목

참조

Value