List 요소의 바인딩 지원
이 항목은 레거시 기술과 관련된 것입니다. 이제 XML Web services와 XML Web services 클라이언트는 다음을 사용하여 만들어야 합니다. Windows Communication Foundation.
.NET Framework에서는 <list> 요소에 대한 부분 바인딩 지원을 제공합니다.
.NET Framework는 목록 형식이 있는 XML 특성 선언에 대해서는 정확한 바인딩을 제공하지만 요소 선언에 대해서는 제공하지 않습니다.
설명
<list> 구문은 다른 단순 형식에 있는 일련의 값을 공백으로 구분하여 사용할 수 있는 단순 형식을 정의하는 데 사용됩니다. 빌딩 블록으로 사용되는 형식은 의미 있는 단위로 나눌 수 없기 때문에 원자 형식이라고 합니다. 목록이나 공용 구조체 형식을 제외한 모든 단순 형식은 원자 형식입니다.
다음 예제에서는 값이 공백으로 구분된 10진수일 수 있는 목록 형식을 만드는 방법을 보여 줍니다.
<xsd:simpleType name="numbersList">
<xsd:list itemType="xsd:Decimal"/>
</xsd:simpleType>
.NET Framework에서는 <list> 요소가 요소 형식이 아닌 특성 형식을 정의하는 경우 이 요소에 대한 바인딩을 제공합니다.
XML 스키마 문서에서 소스 코드를 생성할 때 Xsd.exe는 목록 형식이 있는 요소를 발견하면 목록의 구성 형식인 itemTypeXmlAttributeAttribute 특성 값에 해당하는 .NET Framework 형식의 필드를 생성합니다. 문자열 기반 형식의 경우 문자열의 문자열도 여전히 문자열이기 때문에 이러한 변환은 기술적으로 올바릅니다. 앞의 예제에 있는 10진수 기반 형식과 같이 다른 단순 형식을 기반으로 하는 목록 형식의 경우에는 이러한 변환이 올바르지 않습니다.
Xsd.exe는 목록 형식이 있는 특성을 발견하면 itemType 특성의 값에 해당하는 .NET Framework 형식 배열의 필드를 생성합니다. 이 필드는 특성으로 표시됩니다. 다음은 생성된 필드의 예입니다.
[System.Xml.Serialization.XmlAttributeAttribute()]
public System.Decimal[] numbers;
마찬가지로 클래스 집합에서 XML 스키마 문서를 생성할 때 Xsd.exe는 필드 또는 속성에서 다음 조건을 찾아 목록 형식을 생성합니다.
필드 또는 속성의 형식은 단순 형식에 매핑될 수 있는 배열 형식입니다.
필드 또는 속성은 XmlAttribute 특성으로 표시됩니다.
이 조합은 <list> 형식으로만 표시될 수 있습니다. 그 이유는 XML 특성은 단순 형식이어야 하기 때문이며 그렇지 않으면 maxOccurs 특성이 unbounded
로 설정된 복합 형식으로 배열이 바인딩됩니다.
예제
입력 XML 스키마 문서:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.org/" xmlns="http://example.org/" elementFormDefault="qualified">
<xsd:element name="alphabet" type="AlphabetType"/>
<xsd:complexType name="AlphabetType">
<xsd:sequence>
<xsd:element name="language" type="xsd:string"/>
<xsd:element name="count" type="xsd:decimal"/>
</xsd:sequence>
<xsd:attribute name="letters">
<xsd:simpleType>
<xsd:list itemType="Character"/>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:simpleType name="Character">
<xsd:restriction base="xsd:string">
<xsd:length value="1"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
앞의 XML 스키마 문서에서 생성된 C# 클래스:
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("alphabet", Namespace="http://example.org/", IsNullable=false)]
public class AlphabetType {
public string language;
public System.Decimal count;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string[] letters;
}
앞의 C# 소스에서 컴파일된 어셈블리에서 생성된 XML 스키마 복합 형식:
<xs:complexType name="AlphabetType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="language" type="xs:string" />
<xs:element minOccurs="1" maxOccurs="1" name="count" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="letters">
<xs:simpleType>
<xs:list itemType="xs:string" />
</xs:simpleType>
</xs:attribute>
</xs:complexType>
가능한 특성 | 바인딩 지원 |
---|---|
id |
Xsd.exe 유틸리티는 고유 식별자를 제공하기 위한 id 특성을 무시합니다. |
itemType |
목록 형식이 요소가 아닌 XML 특성으로 사용되는 경우 Xsd.exe 도구는 itemType 특성 값에 해당하는 .NET Framework 형식 배열인 필드를 생성합니다. |
가능한 부모 요소: <simpleType>
가능한 자식 요소: <annotation>, <simpleType>