35.6. 모델 그룹 사용
35.6.1. 개요
XML 스키마 모델 그룹은 사용자 정의 복잡한 유형의 요소 그룹을 참조할 수 있는 편리한 바로 가기입니다. 예를 들어 애플리케이션의 여러 유형에 공통된 요소 그룹을 정의한 다음 그룹을 반복적으로 참조할 수 있습니다. 모델 그룹은 group 요소를 사용하여 정의되며 복잡한 유형 정의와 유사합니다. 모델 그룹을 Java로 매핑하는 것도 복잡한 유형의 매핑과 유사합니다.
35.6.2. XML 스키마에서 모델 그룹 정의
name 속성이 있는 group 요소를 사용하여 XML 스키마에서 모델 그룹을 정의합니다. name 특성의 값은 스키마 전체에서 그룹을 참조하는 데 사용되는 문자열입니다. group 요소는 complexType 요소와 마찬가지로 sequence 요소, all 요소 또는 선택 요소를 즉시 자식으로 포함할 수 있습니다.
자식 요소 내에서 요소 요소를 사용하여 그룹의 멤버를 정의합니다.In the child element, you define the members of the group using element elements. 그룹의 각 멤버에 대해 하나의 요소를 지정합니다. 그룹 멤버는 min #187 및 max#187를 포함한 . 따라서 그룹에 세 개의 요소가 있고 그 중 하나가 최대 세 번 발생할 수 있는 경우 세 개의 요소 요소에 대해 표준 특성 중 하나를 사용할 수 있습니다요소 요소가 있는 그룹을 정의합니다. 예 35.22. “XML 스키마 모델 그룹” 세 개의 요소가 있는 모델 그룹을 표시합니다.
예 35.22. XML 스키마 모델 그룹
<group name="passenger">
<sequence>
<element name="name" type="xsd:string" />
<element name="clubNum" type="xsd:long" />
<element name="seatPref" type="xsd:string"
maxOccurs="3" />
</sequence>
</group>35.6.3. 유형 정의에서 모델 그룹 사용
모델 그룹이 정의되면 복잡한 유형 정의의 일부로 사용할 수 있습니다. 복잡한 유형 정의에서 모델 그룹을 사용하려면 ref 특성과 함께 group 요소를 사용합니다. ref 속성의 값은 해당 값이 정의될 때 그룹에 지정된 이름입니다. 예를 들어 예 35.22. “XML 스키마 모델 그룹” 에 정의된 그룹을 사용하려면 {ref="tns:passenger" > 에 표시된 대로 예 35.23. “모델 그룹이 포함된 복잡한 유형” 를 사용합니다.
예 35.23. 모델 그룹이 포함된 복잡한 유형
<complexType name="reservation">
<sequence>
<group ref="tns:passenger" />
<element name="origin" type="xsd:string" />
<element name="destination" type="xsd:string" />
<element name="fltNum" type="xsd:long" />
</sequence>
</complexType>
유형 정의에 모델 그룹을 사용하면 그룹이 유형의 멤버가 됩니다. 따라서 예약 인스턴스에는 4개의 멤버 요소가 있습니다. 첫 번째 요소는 여객 요소이며 예 35.22. “XML 스키마 모델 그룹” 에 표시된 그룹에 의해 정의된 멤버 요소를 포함합니다. 예약 인스턴스의 예는 예 35.24. “모델 그룹이 있는 Type의 인스턴스” 에 표시되어 있습니다.
예 35.24. 모델 그룹이 있는 Type의 인스턴스
<reservation>
<passenger> <name>A. Smart</name> <clubNum>99</clubNum> <seatPref>isle1</seatPref> </passenger>
<origin>LAX</origin>
<destination>FRA</destination>
<fltNum>34567</fltNum>
</reservation>35.6.4. Java에 매핑
기본적으로 모델 그룹은 복잡한 유형 정의에 포함된 경우에만 Java 아티팩트에 매핑됩니다. 모델 그룹을 포함하는 복잡한 유형에 대한 코드를 생성할 때 Apache CXF는 모델 그룹의 멤버 변수를 유형에 대해 생성된 Java 클래스에 간단하게 포함합니다. 모델 그룹을 나타내는 멤버 변수에는 모델 그룹의 정의에 따라 주석이 추가됩니다.
예 35.25. “유형 그룹” 예 35.23. “모델 그룹이 포함된 복잡한 유형” 에 정의된 복잡한 유형에 대해 생성된 Java 클래스를 표시합니다.
예 35.25. 유형 그룹
@XmlType(name = "reservation", propOrder = {
"name",
"clubNum",
"seatPref",
"origin",
"destination",
"fltNum"
})
public class Reservation {
@XmlElement(required = true)
protected String name;
protected long clubNum;
@XmlElement(required = true)
protected List<String> seatPref;
@XmlElement(required = true)
protected String origin;
@XmlElement(required = true)
protected String destination;
protected long fltNum;
public String getName() {
return name;
}
public void setName(String value) {
this.name = value;
}
public long getClubNum() {
return clubNum;
}
public void setClubNum(long value) {
this.clubNum = value;
}
public List<String> getSeatPref() {
if (seatPref == null) {
seatPref = new ArrayList<String>();
}
return this.seatPref;
}
public String getOrigin() {
return origin;
}
public void setOrigin(String value) {
this.origin = value;
}
public String getDestination() {
return destination;
}
public void setDestination(String value) {
this.destination = value;
}
public long getFltNum() {
return fltNum;
}
public void setFltNum(long value) {
this.fltNum = value;
}35.6.5. 여러 발생
그룹 요소의 max Cryostat 속성을 둘 이상의 값으로 설정하여 모델 그룹이 두 번 이상 표시되도록 지정할 수 있습니다. 모델 그룹 Apache CXF의 여러 발생을 허용하려면 모델 그룹을 List<T> 오브젝트에 매핑 합니다. List<T > 오브젝트는 그룹의 첫 번째 하위 규칙에 따라 생성됩니다.
-
시퀀스요소를 사용하여 그룹을 정의하는 경우 35.5.5절. “시퀀스에 대한 발생 제한” 을 참조하십시오. -
선택요소를 사용하여 그룹을 정의하는 경우 35.5.3절. “선택 요소에 대한 발생 제한” 을 참조하십시오.