38.6. 요소 또는 속성의 기본 유형 지정


38.6.1. 개요

경우에 따라 요소에 대해 생성된 개체의 클래스를 사용자 지정하거나 XML 스키마 복잡한 유형의 일부로 정의된 특성을 사용자 지정해야 합니다. 예를 들어 간단한 형식 대체를 허용하기 위해 보다 일반화된 오브젝트 클래스를 사용할 수 있습니다.

이 작업을 수행하는 한 가지 방법은 CryostatB 기본 유형 사용자 지정을 사용하는 것입니다. 이를 통해 개발자는 사례별로 요소 또는 특성을 나타내기 위해 생성된 오브젝트의 클래스를 지정할 수 있습니다. 기본 유형 사용자 지정을 사용하면 XML 스키마 구성과 생성된 Java 오브젝트 간에 대체 매핑을 지정할 수 있습니다. 이러한 대체 매핑은 간단한 선택 사항이거나 기본 기본 클래스의 일반화일 수 있습니다. 또한 XML 스키마 기본 유형을 Java 클래스에 매핑할 수도 있습니다.

38.6.2. 사용자 정의 사용

XML Schema 구성에 CryostatB 기본 유형 속성을 적용하려면 CryostatB baseType 사용자 지정 요소를 사용합니다. baseType 사용자 지정 요소는 CryostatB 속성 요소의 자식이므로 올바르게 중첩되어야 합니다.

XML 스키마 구성의 매핑을 Java 오브젝트에 사용자 지정하는 방법에 따라 baseType 사용자 지정 요소의 name 속성 또는 javaType 자식 요소를 추가합니다. name 속성은 생성된 오브젝트의 기본 클래스를 동일한 클래스 계층 구조 내의 다른 클래스에 매핑하는 데 사용됩니다. javaType 요소는 XML 스키마 기본 유형을 Java 클래스에 매핑하려는 경우 사용됩니다.

중요

동일한 baseType 사용자 지정 요소에서 name 속성과 javaType 자식 요소를 모두 사용할 수 없습니다.

38.6.3. 기본 매핑 특수화 또는 일반화

baseType 사용자 지정 요소의 name 속성은 생성된 오브젝트의 클래스를 동일한 Java 클래스 계층 구조 내의 클래스에 적용하는 데 사용됩니다. 속성은 XML 스키마 구성이 매핑되는 Java 클래스의 정규화된 이름을 지정합니다. 지정된 Java 클래스는 코드 생성기가 일반적으로 XML 스키마 구성에 대해 생성하는 Java 클래스의 슈퍼 클래스 또는 하위 클래스 여야 합니다. Java 기본 유형에 매핑되는 XML Schema 기본 유형의 경우 래퍼 클래스는 사용자 지정을 위해 기본 기본 클래스로 사용됩니다.

예를 들어 xsd:int 로 정의된 요소는 java.lang.Integer 를 기본 기본 클래스로 사용합니다. name 속성 값은 Number 또는 Object 와 같은 Integer 의 슈퍼 클래스를 지정할 수 있습니다.

간단한 유형 대체의 경우 가장 일반적인 사용자 지정은 기본 유형을 Object 오브젝트에 매핑하는 것입니다.

예 38.27. “기본 유형의 인라인 사용자 지정” 복잡한 유형의 하나의 요소를 Java Object 오브젝트에 매핑하는 인라인 사용자 지정을 보여줍니다.

예 38.27. 기본 유형의 인라인 사용자 지정

<complexType name="widgetOrderInfo">
  <all>
    <element name="amount" type="xsd:int" />
     <element name="shippingAdress" type="Address">
      <annotation> <appinfo> <jaxb:property> <jaxb:baseType name="java.lang.Object" /> </jaxb:property> </appinfo> </annotation>
    </element>
    <element name="type" type="xsd:string"/>
  </all>
</complexType>
Copy to Clipboard Toggle word wrap

예 38.28. “기본 유형을 사용자 정의할 외부 바인딩 파일” 예 38.27. “기본 유형의 인라인 사용자 지정” 에 표시된 사용자 지정의 외부 바인딩 파일을 표시합니다.

예 38.28. 기본 유형을 사용자 정의할 외부 바인딩 파일

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               jaxb:version="2.0">
  <jaxb:bindings schemaLocation="enumMap.xsd">
    <jaxb:bindings node="xsd:ComplexType[@name='widgetOrderInfo']">
      <jaxb:bindings node="xsd:element[@name='shippingAddress']">
        <jaxb:property>
          <jaxb:baseType name="java.lang.Object" />
        </jaxb:property>
      </jaxb:bindings>
    </jaxb:bindings>
  </jaxb:bindings>
<jaxb:bindings>
Copy to Clipboard Toggle word wrap

생성된 Java 오브젝트의 @ Cryostat 주석에type 속성이 포함되어 있습니다. type 속성의 값은 생성된 오브젝트의 기본 유형을 나타내는 클래스 오브젝트입니다. XML Schema 기본 유형의 경우 클래스는 해당 Java 기본 유형의 래퍼 클래스입니다.

예 38.29. “기본 클래스가 있는 Java 클래스”예 38.28. “기본 유형을 사용자 정의할 외부 바인딩 파일” 의 스키마 정의를 기반으로 생성된 클래스를 표시합니다.

예 38.29. 기본 클래스가 있는 Java 클래스

public class WidgetOrderInfo {

    protected int amount;
    @XmlElement(required = true)
    protected String type;
    @XmlElement(required = true, type = Address.class) protected Object shippingAddress;

    ...
    public Object getShippingAddress() {
        return shippingAddress;
    }

    public void setShippingAddress(Object value) {
        this.shippingAddress = value;
    }

}
Copy to Clipboard Toggle word wrap

38.6.4. javaType과 사용

javaType 요소는 XML Schema 기본 유형을 사용하여 정의된 요소 및 특성을 Java 오브젝트에 매핑하는 방법을 사용자 지정하는 데 사용할 수 있습니다. javaType 요소를 사용하면 baseType 요소의 name 특성을 사용하는 것보다 훨씬 더 많은 유연성을 제공합니다. javaType 요소를 사용하면 기본 유형을 모든 클래스의 오브젝트에 매핑할 수 있습니다.

javaType 요소 사용에 대한 자세한 설명은 38.2절. “XML 스키마의 Java 클래스 지정” 을 참조하십시오.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat