35.5. 발생 제한


35.5.1. Occurrence 제약 조건을 지원하는 스키마 요소

XML 스키마를 사용하면 복잡한 형식 정의를 구성하는 네 가지 XML 스키마 요소에서 발생 제약 조건을 지정할 수 있습니다.XML Schema allows you to specify the occurrence constraints on four of the XML Schema elements that make up a complex type definition:

35.5.2. 모든 요소의 발생 제약 조건

35.5.2.1. XML 스키마

모든 요소로 정의된 복잡한 형식은 모든 요소에서 정의한 구조의 여러 번 발생을 허용하지 않습니다. 그러나 minOccurs 특성을 0 으로 설정하여 모든 요소 선택 사항으로 정의된 구조를 만들 수 있습니다.

35.5.2.2. Java로의 매핑

모든 요소의 minOccurs 속성을 0 으로 설정하면 생성된 Java 클래스에는 영향을 미치지 않습니다.

35.5.3. 선택 요소에서의 발생 제약 조건

35.5.3.1. 개요

기본적으로 선택 요소 결과는 복잡한 형식의 인스턴스에 한 번만 나타날 수 있습니다.By default, the results of a choice element can only appear once in an instance of a complex type. 선택 요소에서 정의한 구조를 나타내기 위해 선택 한 요소가 minOccurs 속성 및 해당 mxOccurs 특성을 사용하여 표시할 수 있는 횟수를 변경할 수 있습니다. 이러한 특성을 사용하면 선택 형식이 복잡한 유형의 인스턴스에서 무제한 시간을 무제한으로 발생할 수 있도록 지정할 수 있습니다.Using these attributes you can specify that the choice type can occur zero to an unlimited number of times in an instance of a complex type. 선택 유형에 대해 선택한 요소는 유형마다 동일할 필요가 없습니다.

35.5.3.2. XML 스키마로 사용

minOccurs 속성은 선택 유형이 표시되어야 하는 최소 횟수를 지정합니다. 값은 모든 양의 정수가 될 수 있습니다. minOccurs 속성을 0 으로 설정하면 선택 유형이 복잡한 유형의 인스턴스 내에 표시되지 않아도 됩니다.

maxOccurs 속성은 선택 형식이 표시될 수 있는 최대 횟수를 지정합니다. 값은 0이 아닌, 양의 정수 또는 바인딩되지 않은 값일 수 있습니다. maxOccurs 속성을 unbounded 로 설정하면 선택 형식이 무한한 횟수가 표시될 수 있습니다.

예 35.18. “Occurrence 제약 조건 선택” 선택 유형인 ClubEvent 의 정의를 선택 발생 제약 조건으로 표시합니다. 선택 유형 전체적으로 0에서 바인딩되지 않은 시간을 반복할 수 있습니다.

예 35.18. Occurrence 제약 조건 선택

<complexType name="ClubEvent">
  <choice minOccurs="0" maxOccurs="unbounded">
    <element name="MemberName" type="xsd:string"/>
    <element name="GuestName" type="xsd:string"/>
  </choice>
</complexType>

35.5.3.3. Java로의 매핑

단일 인스턴스 선택 구조와는 달리 여러 번 발생할 수 있는 XML 스키마 선택 구조는 단일 멤버 변수를 사용하여 Java 클래스에 매핑됩니다. 이 단일 멤버 변수는 시퀀스의 여러 발생에 대한 모든 데이터를 보유하는 List<T> 개체입니다.This single member variable is a List <T> object that holds all of the data for the multiple occurrences of the sequence. 예를 들어 예 35.18. “Occurrence 제약 조건 선택” 에 정의된 시퀀스가 두 번 발생한 경우 목록에 두 개의 항목이 있습니다.

Java 클래스의 멤버 변수의 이름은 멤버 요소의 이름을 연결하여 파생됩니다. 요소 이름은 Or 로 구분되며 변수 이름의 첫 번째 문자는 소문자로 변환됩니다. 예를 들어 예 35.18. “Occurrence 제약 조건 선택” 에서 생성된 멤버 변수의 이름은 memberNameOrGuestName 입니다.

목록에 저장된 개체 유형은 멤버 요소의 유형 간의 관계에 따라 달라집니다. 예를 들면 다음과 같습니다.

  • 멤버 요소가 동일한 유형의 경우 생성된 목록에 JAXBElement<T > 개체가 포함됩니다. JAXBElement<T > 개체의 기본 유형은 멤버 요소 형식의 일반 매핑에 의해 결정됩니다.
  • 멤버 요소가 다른 형식이며 Java 표현이 공통 인터페이스를 구현하는 경우 목록에 공통 인터페이스의 개체가 포함됩니다.
  • 멤버 요소가 다른 형식이며 해당 Java 표현이 공통 기본 클래스를 확장하면 목록에 공통 기본 클래스의 개체가 포함됩니다.
  • 다른 조건이 충족되지 않으면 목록에 Object 오브젝트가 포함됩니다.

생성된 Java 클래스는 멤버 변수에 대한 getter 메서드만 갖습니다. getter 메서드는 라이브 목록에 대한 참조를 반환합니다. 반환된 목록에 대한 수정 사항은 실제 오브젝트에 적용됩니다.

Java 클래스는 @XmlType 주석으로 장식됩니다. 주석의 name 속성은 XML Schema 정의의 부모 요소에서 name 속성 값으로 설정됩니다. 주석의 propOrder 속성에는 시퀀스의 요소를 나타내는 단일 멤버 변수가 포함되어 있습니다.

선택한 구조의 요소를 나타내는 멤버 변수는 @XmlElements 주석으로 장식됩니다. @XmlElements 주석에는 쉼표로 구분된 @XmlElement 주석 목록이 포함되어 있습니다. 목록에는 유형의 XML 스키마 정의에 정의된 각 멤버 요소에 대해 하나의 @XmlElement 주석이 있습니다. 목록의 @XmlElement 주석에는 XML Schema 요소 요소name 속성으로 설정된 name 속성이 있으며 XML Schema 요소 요소 유형 의 매핑에서 생성된 Java 클래스로 설정된 해당 type 속성이 있습니다.

예 35.19. “Occurrence Constraint를 사용한 Choice 구조의 Java 설명” 예 35.18. “Occurrence 제약 조건 선택” 에 정의된 XML 스키마 선택 구조의 Java 매핑을 보여줍니다.

예 35.19. Occurrence Constraint를 사용한 Choice 구조의 Java 설명

@XmlType(name = "ClubEvent", propOrder = {
    "memberNameOrGuestName"
})
public class ClubEvent {

    @XmlElementRefs({
        @XmlElementRef(name = "GuestName", type = JAXBElement.class),
        @XmlElementRef(name = "MemberName", type = JAXBElement.class)
    })
    protected List<JAXBElement<String>> memberNameOrGuestName;

    public List<JAXBElement<String>> getMemberNameOrGuestName() {
        if (memberNameOrGuestName == null) {
            memberNameOrGuestName = new ArrayList<JAXBElement<String>>();
        }
        return this.memberNameOrGuestName;
    }

}

35.5.3.4. minOccurs가 0으로 설정

minOccurs 요소만 지정되고 해당 값이 0 이면 minOccurs 속성이 설정되지 않은 것처럼 코드 생성기가 Java 클래스를 생성합니다.

35.5.4. Elements에서의 발생 제약 조건

35.5.4.1. 개요

요소 요소의 minOccurs 속성 및 maxOccurs 속성을 사용하여 복잡한 요소에서 특정 요소가 표시되는 횟수를 지정할 수 있습니다.You can specify how many times a specific element in a complex type appears using the element's minOccurs attribute and maxOccurs attribute. 두 속성의 기본값은 1 입니다.

35.5.4.2. minOccurs가 0으로 설정

복잡한 유형의 멤버 요소 minOccurs 속성 중 하나를 0 으로 설정하면 해당 Java 멤버 변수를 구성하는 @XmlElement 주석이 변경됩니다. 필수 속성을 true 로 설정하는 대신 @XmlElement 주석의 필수 속성이 false 로 설정됩니다.

35.5.4.3. mindays가 1보다 큰 값으로 설정

XML 스키마에서는 요소 요소의 minOccurs 속성을 둘 이상의 값으로 설정하여 형식의 인스턴스에서 요소가 두 번 이상 발생하도록 지정할 수 있습니다.In XML Schema you can specify that an element must occur more than once in an instance of the type by setting the element's minOccurs attribute to a value greater than one. 그러나 생성된 Java 클래스는 XML 스키마 제약 조건을 지원하지 않습니다. Apache CXF는 minOccurs 속성이 설정되지 않은 것처럼 지원되는 Java 멤버 변수를 생성합니다.

35.5.4.4. maxOccurs set이 있는 요소

멤버 요소가 복잡한 형식의 인스턴스에 여러 번 표시되도록 하려면 요소의 maxOccurs 속성을 1보다 큰 값으로 설정합니다.When you want a member element to appear multiple times in an instance of a complex type, you set the element's maxOccurs attribute to a value greater than 1. maxOccurs 특성의 값을 unbounded 로 설정하여 멤버 요소가 무제한으로 표시될 수 있음을 지정할 수 있습니다.

코드 생성기는 maxOccurs 특성이 있는 멤버 요소를 값 1보다 큰 값으로 매핑합니다.The code generators map a member element with the maxOccurs attribute set to a value greater than 1 to a Java member variable. 목록의 기본 클래스는 요소의 유형을 Java에 매핑하여 결정됩니다. XML 스키마 기본 유형의 경우 래퍼 클래스는 “래퍼 클래스” 에 설명된 대로 사용됩니다. 예를 들어 멤버 요소가 xsd:int 형식의 경우 생성된 멤버 변수는 List<Integer> 오브젝트입니다.For example, if the member element is of type xsd:int the generated member variable is a List<Integer > object.

35.5.5. 시퀀스의 발생 제한

35.5.5.1. 개요

기본적으로 시퀀스 요소의 내용은 복잡한 형식의 인스턴스에 한 번만 나타날 수 있습니다.By default, the contents of a sequence element can only appear once in an instance of a complex type. 시퀀스 요소에서 정의한 요소 시퀀스가 minOccurs 속성 및 해당 maxOccurs 특성을 사용하여 표시할 수 있는 횟수를 변경할 수 있습니다.You can change the number of times the sequence of elements defined by a sequence element is allowed to appear using its minOccurs attribute and its maxOccurs attribute. 이러한 특성을 사용하면 시퀀스 유형이 복잡한 유형의 인스턴스에서 무제한 횟수로 0이 발생할 수 있습니다.Using these attributes you can specify that the sequence type can occur zero to an unlimited number of times in an instance of a complex type.

35.5.5.2. XML 스키마 사용

minOccurs 속성은 정의된 복합 유형의 인스턴스에서 시퀀스가 발생해야 하는 최소 횟수를 지정합니다. 값은 모든 양의 정수가 될 수 있습니다. minOccurs 특성을 0 으로 설정하면 시퀀스가 복잡한 형식의 인스턴스 내에 나타나지 않도록 지정합니다.Setting the minOccurs attribute to 0 specifies that the sequence does not need to appear inside an instance of the complex type.

maxOccurs 속성은 정의된 복합 유형의 인스턴스에서 시퀀스가 발생할 수 있는 횟수에 대한 상한을 지정합니다. 값은 0이 아닌, 양의 정수 또는 바인딩되지 않은 값일 수 있습니다. maxOccurs 속성을 unbounded 로 설정하면 시퀀스가 무한한 횟수로 표시될 수 있습니다.

예 35.20. “Occurrence Constraints이 있는 순서” 시퀀스 발생 제약 조건을 사용하여 시퀀스 형식 CultureInfo의 정의를 표시합니다.Shows the definition of a sequence type, CultureInfo, with sequence occurrence constraints. 시퀀스는 0에서 2번 반복할 수 있습니다.

예 35.20. Occurrence Constraints이 있는 순서

<complexType name="CultureInfo">
  <sequence minOccurs="0" maxOccurs="2">
    <element name="Name" type="string"/>
    <element name="Lcid" type="int"/>
  </sequence>
</complexType>

35.5.5.3. Java로의 매핑

단일 인스턴스 시퀀스와 달리 여러 번 발생할 수 있는 XML 스키마 시퀀스는 단일 멤버 변수를 사용하여 Java 클래스에 매핑됩니다.Unlike single instance sequences, XML Schema sequences that can occur multiple times are mapped to a Java class with a single member variable. 이 단일 멤버 변수는 시퀀스의 여러 발생에 대한 모든 데이터를 보유하는 List<T> 개체입니다.This single member variable is a List <T> object that holds all of the data for the multiple occurrences of the sequence. 예를 들어 예 35.20. “Occurrence Constraints이 있는 순서” 에 정의된 시퀀스가 두 번 발생한 경우 목록에 네 개의 항목이 있습니다.

Java 클래스의 멤버 변수의 이름은 멤버 요소의 이름을 연결하여 파생됩니다. 요소 이름은 및 로 구분되며 변수 이름의 첫 번째 문자는 소문자로 변환됩니다. 예를 들어 예 35.20. “Occurrence Constraints이 있는 순서” 에서 생성된 멤버 변수의 이름은 nameAndLcid 입니다.

목록에 저장된 개체 유형은 멤버 요소의 유형 간의 관계에 따라 달라집니다. 예를 들면 다음과 같습니다.

  • 멤버 요소가 동일한 유형의 경우 생성된 목록에 JAXBElement<T > 개체가 포함됩니다. JAXBElement<T > 개체의 기본 유형은 멤버 요소 형식의 일반 매핑에 의해 결정됩니다.
  • 멤버 요소가 다른 형식이며 Java 표현이 공통 인터페이스를 구현하는 경우 목록에 공통 인터페이스의 개체가 포함됩니다.
  • 멤버 요소가 다른 형식이며 해당 Java 표현이 공통 기본 클래스를 확장하면 목록에 공통 기본 클래스의 개체가 포함됩니다.
  • 다른 조건이 충족되지 않으면 목록에 Object 오브젝트가 포함됩니다.

생성된 Java 클래스에는 멤버 변수에 대한 getter 메서드만 있습니다. getter 메서드는 라이브 목록에 대한 참조를 반환합니다. 반환된 목록에 대한 수정은 실제 오브젝트에 영향을 미칩니다.

Java 클래스는 @XmlType 주석으로 장식됩니다. 주석의 name 속성은 XML Schema 정의의 부모 요소에서 name 속성 값으로 설정됩니다. 주석의 propOrder 속성에는 시퀀스의 요소를 나타내는 단일 멤버 변수가 포함되어 있습니다.

시퀀스의 요소를 나타내는 멤버 변수는 @XmlElements 주석으로 장식됩니다. @XmlElements 주석에는 쉼표로 구분된 @XmlElement 주석 목록이 포함되어 있습니다. 목록에는 유형의 XML 스키마 정의에 정의된 각 멤버 요소에 대해 하나의 @XmlElement 주석이 있습니다. 목록의 @XmlElement 주석에는 XML Schema 요소 요소name 속성으로 설정된 name 속성이 있으며 XML Schema 요소 요소 유형 의 매핑에서 생성된 Java 클래스로 설정된 해당 type 속성이 있습니다.

예 35.21. “Occurrence Constraint가 포함된 시퀀스를 나타냅니다.Represents an Sequence with an Occurrence Constraint” 예 35.20. “Occurrence Constraints이 있는 순서” 에 정의된 XML 스키마 시퀀스의 Java 매핑을 보여줍니다.

예 35.21. Occurrence Constraint가 포함된 시퀀스를 나타냅니다.Represents an Sequence with an Occurrence Constraint

@XmlType(name = "CultureInfo", propOrder = {
    "nameAndLcid"
})
public class CultureInfo {

    @XmlElements({
        @XmlElement(name = "Name", type = String.class),
        @XmlElement(name = "Lcid", type = Integer.class)
    })
    protected List<Serializable> nameAndLcid;

    public List<Serializable> getNameAndLcid() {
        if (nameAndLcid == null) {
            nameAndLcid = new ArrayList<Serializable>();
        }
        return this.nameAndLcid;
    }

}

35.5.5.4. minOccurs가 0으로 설정

minOccurs 요소만 지정되고 해당 값이 0 이면 minOccurs 속성이 설정되지 않은 것처럼 코드 생성기가 Java 클래스를 생성합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.