Menu Close

第34章 単純型の使用

概要

XML スキーマの単純型は、xsd:int のような XML スキーマプリミティブ型であるか、simpleType 要素を使用して定義されます。これらは、子または属性が含まれない要素を指定するために使用されます。通常、それらはネイティブ Java 構造にマッピングされ、実装するのに特別なクラスを生成する必要はありません。列挙された単純型は、Java enum 型にマッピングされるため、生成されたコードを生じません。

34.1. プリミティブ型

概要

XML スキーマプリミティブ型のいずれかを使用してメッセージ部分が定義されると、生成されたパラメーターの型が対応する Java ネイティブ型にマッピングされます。同じパターンが、複合型のスコープ内で定義される要素をマッピングする際に使用されます。結果のフィールドは、対応する Java ネイティブ型になります。

マッピング

表34.1「XML スキーマプリミティブ型から Java ネイティブ型へのマッピング」に、XML スキーマプリミティブ型と Java ネイティブ型間のマッピングを一覧表示します。

表34.1 XML スキーマプリミティブ型から Java ネイティブ型へのマッピング

XML スキーマ型Java 型

xsd:string

String

xsd:integer

BigInteger

xsd:int

int

xsd:long

long

xsd:short

short

xsd:decimal

BigDecimal

xsd:float

float

xsd:double

double

xsd:boolean

boolean

xsd:byte

byte

xsd:QName

QName

xsd:dateTime

XMLGregorianCalendar

xsd:base64Binary

byte[]

xsd:hexBinary

byte[]

xsd:unsignedInt

long

xsd:unsignedShort

int

xsd:unsignedByte

short

xsd:time

XMLGregorianCalendar

xsd:date

XMLGregorianCalendar

xsd:g

XMLGregorianCalendar

xsd:anySimpleType [a]

Object

xsd:anySimpleType [b]

String

xsd:duration

Duration

xsd:NOTATION

QName

[a] この型の要素の場合。
[b] この型の属性の場合。

ラッパークラス

XML スキーマプリミティブ型から Java プリミティブ型へのマッピングは、可能なすべての XML スキーマ構造で機能する訳ではありません。複数のケースで、XML スキーマプリミティブ型を Java プリミティブ型の対応するラッパー型にマッピングする必要があります。そのケースは以下のとおりです。

  • 以下のように、element 要素の nillable 属性が true に設定されている。

    <element name="finned" type="xsd:boolean"
             nillable="true" />
  • 以下のように、element 要素の minOccurs 属性が 0 に設定され、その maxOccurs 属性が 1 に設定されているか、その maxOccurs 属性が指定されていない。

    <element name="plane" type="xsd:string" minOccurs="0" />
  • 以下のように、attribute 要素の use 属性が optional に設定されているか指定されておらず、さらに default 属性と fixed 属性のいずれも指定されいない。

    <element name="date">
      <complexType>
        <sequence/>
        <attribute name="calType" type="xsd:string"
                   use="optional" />
      </complexType>
    </element>

表34.2「プリミティブスキーマ型から Java Wrapper クラスへのマッピング」で、これらのケースで XML スキーマプリミティブ型がどのように Java ラッパークラスにマッピングされるかを説明します。

表34.2 プリミティブスキーマ型から Java Wrapper クラスへのマッピング

スキーマ型Java 型

xsd:int

java.lang.Integer

xsd:long

java.lang.Long

xsd:short

java.lang.Short

xsd:float

java.lang.Float

xsd:double

java.lang.Double

xsd:boolean

java.lang.Boolean

xsd:byte

java.lang.Byte

xsd:unsignedByte

java.lang.Short

xsd:unsignedShort

java.lang.Integer

xsd:unsignedInt

java.lang.Long

xsd:unsignedLong

java.math.BigInteger

xsd:duration

java.lang.String