34.4. lists
34.4.1. 개요
XML 스키마는 공백으로 구분된 단순 형식 목록인 데이터 형식을 정의하는 메커니즘을 지원합니다. 목록 유형을 사용하는 요소 primeList
의 예는 예 34.7. “목록 유형 예” 에 표시되어 있습니다.
예 34.7. 목록 유형 예
<primeList>1 3 5 7 9 11 13<\primeList>
XML Schema 목록 유형은 일반적으로 Java List<T> 오브젝트에
매핑됩니다. 이 패턴과 유일한 변형은 메시지 부분이 XML Schema 목록 유형의 인스턴스에 직접 매핑되는 경우입니다.
34.4.2. XML 스키마에서 목록 유형 정의
XML Schema 목록 유형은 간단한 유형이며, 이러한 유형은 simpleType
요소를 사용하여 정의됩니다. 목록 유형을 정의하는 데 사용되는 가장 일반적인 구문은 예 34.8. “XML 스키마 목록 형식 구문” 에 표시되어 있습니다.
예 34.8. XML 스키마 목록 형식 구문
<simpleType name="listType"> <list itemType="atomicType"> <facet value="value" /> <facet value="value" /> ... </list> </simpleType>
atomicType 에 대해 제공되는 값은 목록에 있는 요소의 유형을 정의합니다. xsd:int 또는 xsd:string 또는 목록이 아닌 사용자 정의 단순 형식처럼 XML 스키마 원자성 유형으로만 빌드될 수 있습니다.It can only be one of the built in XML Schema atomic types, such as xsd:int
or xsd:string
, or a user-defined simple type that is not a list.
목록 유형에 나열된 요소 유형을 정의하는 것 외에도 facets를 사용하여 목록 유형의 속성을 추가로 제한할 수도 있습니다. 표 34.3. “유형 Facets 나열” 목록 유형에서 사용하는 facet를 보여줍니다.
facet | 효과 |
---|---|
| 목록 형식의 인스턴스에 있는 요소 수를 정의합니다.Defines the number of elements in an instance of the list type. |
| 목록 형식의 인스턴스에 허용되는 최소 요소 수를 정의합니다. |
| 목록 형식의 인스턴스에 허용되는 최대 요소 수를 정의합니다.Defines the maximum number of elements allowed in an instance of the list type. |
| 목록 형식의 인스턴스에 있는 요소에 허용되는 값을 정의합니다.Defines the allowable values for elements in an instance of the list type. |
| 목록 형식의 인스턴스에 있는 요소의 어휘 형식을 정의합니다.Defines the lexical form of the elements in an instance of the list type. 패턴은 정규식을 사용하여 정의됩니다. |
예를 들어 예 34.7. “목록 유형 예” 에 표시된 simpleList
요소에 대한 정의는 예 34.9. “목록 유형 정의” 로 표시됩니다.
예 34.9. 목록 유형 정의
<simpleType name="primeListType"> <list itemType="int"/> </simpleType> <element name="primeList" type="primeListType"/>
예 34.8. “XML 스키마 목록 형식 구문” 에 표시된 구문 외에도 예 34.10. “목록 유형의 대체 구문” 에 표시된 덜 일반적인 구문을 사용하여 목록 유형을 정의할 수도 있습니다.
예 34.10. 목록 유형의 대체 구문
<simpleType name="listType"> <list> <simpleType> <restriction base="atomicType"> <facet value="value"/> <facet value="value"/> ... </restriction> </simpleType> </list> </simpleType>
34.4.3. 목록 유형 요소를 Java에 매핑
요소가 목록 유형을 정의하면 목록 유형이 컬렉션 속성에 매핑됩니다. 컬렉션 속성은 Java List<T>
개체입니다. List<T>
에서 사용하는 템플릿 클래스는 목록의 기본 유형에서 매핑되는 래퍼 클래스입니다. 예를 들어 예 34.9. “목록 유형 정의” 에 정의된 목록 유형은 List<Integer> 에 매핑됩니다
.
래퍼 유형 매핑에 대한 자세한 내용은 “래퍼 클래스” 을 참조하십시오.
34.4.4. Java에 목록 유형 매개변수 매핑
메시지 파트가 목록 유형으로 정의되거나 목록 유형의 요소에 매핑되는 경우 결과 메서드 매개 변수는 List<T> 개체 대신 배열에 매핑됩니다.When a message part is defined as a list type, or is mapped to an element of a list type, the resulting method parameter is mapped to an array instead of a List<T
> object. 배열의 기본 유형은 목록 유형의 기본 클래스의 래퍼 클래스입니다.
예를 들어 예 34.11. “목록 유형 메시지 파트가 있는 WSDL” 의 WSDL 조각은 예 34.12. “목록 유형 매개 변수가 있는 Java 메서드” 로 표시된 메서드 서명이 생성됩니다.
예 34.11. 목록 유형 메시지 파트가 있는 WSDL
<definitions ...>
...
<types ...>
<schema ... >
<simpleType name="primeListType">
<list itemType="int"/>
</simpleType>
<element name="primeList" type="primeListType"/>
</schemas>
</types>
<message name="numRequest"> <part name="inputData" element="xsd1:primeList" /> </message>
<message name="numResponse">;
<part name="outputData" type="xsd:int">
...
<portType name="numberService">
<operation name="primeProcessor">
<input name="numRequest" message="tns:numRequest" />
<output name="numResponse" message="tns:numResponse" />
</operation>
...
</portType>
...
</definitions>
예 34.12. 목록 유형 매개 변수가 있는 Java 메서드
public interface NumberService {
@XmlList
@WebResult(name = "outputData", targetNamespace = "", partName = "outputData")
@WebMethod
public int primeProcessor(
@WebParam(partName = "inputData", name = "primeList", targetNamespace = "...") java.lang.Integer[] inputData
);
}