Share via


Group 요소의 바인딩 지원

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

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

XML 스키마 문서에서 소스 코드를 생성할 경우 Xsd.exe는 각 <group> 참조를 해당 참조가 들어 있는 <complexType> 정의와 일치하는 클래스로 직접 확장합니다.

설명

스키마 디자이너는 <group> 요소를 사용하여 요소 그룹을 전역적으로 정의한 후 참조를 통해 개수에 제한 없이 복합 형식으로 해당 그룹을 다시 사용할 수 있습니다.

.NET Framework에는 요소 그룹을 코드에 표시하기 위한 방법이 없습니다. 대신 XML 스키마 문서에서 소스 코드를 생성할 때 Xsd.exe는 ref 특성을 통해 각 <group> 참조를 해당 참조가 들어 있는 <group> 정의와 일치하는 클래스로 직접 확장합니다. 각 요소에 대해 public 필드가 생성됩니다.

개발자는 동일한 그룹의 요소 바인딩 필드 또는 속성을 여러 클래스에서 직접 정의하지 못하도록 기본 클래스를 수동으로 만들 수 있으며 XML 스키마 복합 형식을 나타내는 클래스가 해당 기본 클래스로부터 상속받게 할 수 있습니다.

XML 스키마 정의 언어를 사용하면 maxOccurs 특성 값을 1보다 크게 지정하여 <group> 참조를 나타낼 수 있습니다. 그룹이 여러 개 나타나는 스키마를 제대로 가져오려면 Xsd.exe에서 /order 명령줄 옵션을 사용합니다. 이러한 XML 스키마에서 소스 코드를 생성할 경우 기본적으로 Xsd.exe가 그룹의 각 요소에 대한 배열을 잘못 생성합니다. /order 옵션을 사용하면 그룹의 모든 멤버에 대해 하나의 배열이 생성되며 여러 개의 XmlElementAttribute 특성이 각 그룹 멤버에 하나씩 지정됩니다.

Example

입력 XML 스키마 문서:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
    <xsd:group name="version">
      <xsd:sequence>
        <xsd:element name="changeNumber" type="xsd:int"/>
        <xsd:element name="instanceId" type="xsd:string"/>
      </xsd:sequence>
    </xsd:group>
    <xsd:complexType name="keyInfo">
      <xsd:sequence>
        <xsd:element name="key" type="xsd:string"/>
        <xsd:group ref="version" />
      </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 key;
        
    public int changeNumber;
        
    public string instanceId;
}

앞의 C# 소스에서 컴파일된 어셈블리에서 생성된 XML 스키마 복합 형식:

<xs:complexType name="keyInfo">
  <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="1" name="key" type="xs:string" />
    <xs:element minOccurs="1" maxOccurs="1" name="changeNumber" type="xs:int" />
    <xs:element minOccurs="0" maxOccurs="1" name="instanceId" type="xs:string" />
  </xs:sequence>
</xs:complexType>

가능한 특성 바인딩 지원

id

Xsd.exe 유틸리티는 고유 식별자를 제공하기 위한 id 특성을 무시합니다.

maxOccurs

1보다 큰 maxOccurs가 여러 개인 그룹을 사용하여 XML 스키마 문서에서 소스 코드를 생성할 때는 /order 명령줄 스위치를 사용하십시오.

MaxOccurs 특성의 바인딩 지원 특성을 참조하십시오.

minOccurs

XML 스키마 문서에서 소스 코드를 생성할 때 Xsd.exe는 <group> 요소에 적용된 minOccurs 특성을 무시합니다.

MinOccurs 특성의 바인딩 지원 특성을 참조하십시오.

name

Xsd.exe 유틸리티는 <attributeGroup> 요소의 콘텐츠를 익명으로 확장하므로, 특성 그룹 이름을 무시합니다.

Name 특성의 바인딩 지원 특성을 참조하십시오.

ref

.NET Framework에는 그룹을 코드에 표시하기 위한 방법이 없습니다. 대신 XML 스키마 문서에서 소스 코드를 생성할 때 Xsd.exe는 각 ref 특성의 전역적으로 선언된 그룹에 대한 <group> 참조를 해당 참조가 들어 있는 <complexType> 정의와 일치하는 클래스로 직접 확장합니다. <group>의 각 요소에 대해 public 필드가 생성됩니다.

가능한 부모 요소: <choice>, <complexType>, <extension>, <redefine>, <restriction>, <schema>, <sequence>

가능한 자식 요소: <all>, <annotation>, <choice>, <sequence>

참고 항목

참조

XmlSchemaGroup
XmlSchemaGroupRef