34.6. 간단한 유형 하위 항목

34.6.1. 개요

XML은 xsi:type 특성을 사용하여 호환되는 유형 간에 간단한 유형 대체를 허용합니다. 그러나 간단한 유형의 기본 매핑은 Java 기본 유형에 대한 기본 매핑은 간단한 유형 대체를 완전히 지원하지 않습니다. 런타임은 기본 단순 유형 대체를 처리할 수 있지만 정보가 손실됩니다. 코드 생성기는 무해한 단순 유형 대체를 용이하게 하는 Java 클래스를 생성하도록 사용자 지정할 수 있습니다.

34.6.2. 기본 매핑 및 마샬링

Java 기본 유형은 유형 대체를 지원하지 않으므로 간단한 유형 대체에 대한 간단한 유형 대체를 지원하기 위한 간단한 유형의 기본 매핑에 문제가 있습니다. Java 가상 머신은 유형을 정의하는 스키마에서 허용하더라도 int 를 예상하는 변수에 잠시 전달하려는 경우 이를 수행합니다.

Java 유형 시스템에서 부과한 제한 사항을 해결하기 위해 요소의 xsi:type 속성 값이 다음 조건 중 하나를 충족할 때 Apache CXF를 사용하면 간단한 유형 대체를 허용합니다.

  • 요소의 스키마 유형과 호환되는 기본 형식을 지정합니다.
  • 요소의 스키마 유형에서 제한에 따라 파생되는 형식을 지정합니다.
  • 요소의 스키마 유형에서 확장으로 파생되는 복잡한 형식을 지정합니다.

런타임에서 형식 대체를 수행할 때 요소의 xsi:type 속성에 지정된 형식에 대한 지식이 유지되지 않습니다. 형식 대체가 복잡한 형식에서 단순 형식에 해당하는 경우 단순 형식과 직접 관련된 값만 유지됩니다.If the type substitution is from a complex type to a simple type, only the value directly related to the simple type is preserved. 확장에 의해 추가된 다른 모든 요소 및 특성은 손실됩니다.

34.6.3. 무해한 유형 대체 지원

다음과 같은 방법으로 간단한 유형 생성을 사용자 정의하여 간단한 유형 대체의 무해한 지원을 용이하게 할 수 있습니다.

  • globalBindings 사용자 지정 요소의 mapSimpleTypeDeftrue 로 설정합니다.

    이는 코드 생성기가 전역 범위에 정의된 모든 이름의 단순 형식에 대해 Java 값 클래스를 생성하도록 지시합니다.

    자세한 내용은 38.3절. “간단한 유형에 대한 Java 클래스 생성” 에서 참조하십시오.

  • javaType 요소를 globalBindings 사용자 지정 요소에 추가합니다.

    이렇게 하면 코드 생성기가 XML 스키마 기본 유형의 모든 인스턴스를 개체의 특정 클래스에 매핑하도록 지시합니다.

    자세한 내용은 38.2절. “XML 스키마의 Java 클래스 지정” 에서 참조하십시오.

  • 사용자 지정할 특정 요소에 baseType 사용자 지정 요소를 추가합니다.

    baseType 사용자 지정 요소를 사용하면 속성을 나타내기 위해 생성된 Java 유형을 지정할 수 있습니다. 간단한 유형 대체에 대한 최상의 호환성을 위해 java.lang.Object 를 기본 유형으로 사용합니다.

    자세한 내용은 38.6절. “요소 또는 속성의 기본 유형 지정” 에서 참조하십시오.