第34章 単純型の使用

概要

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

34.1. プリミティブ型

概要

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

マッピング

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

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

XML スキーマタイプJava タイプ

xsd: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]

オブジェクト

xsd:anySimpleType [b]

文字列

xsd:duration

期間

xsd:NOTATION

QName

[a] このタイプの要素の場合。
[b] このタイプの属性の場合。

ラッパークラス

XML スキーマプリミティブ型を Java プリミティブ型にマッピングすることは、考えられるすべての XML スキーマ構造に対して機能するわけではありません。いくつかのケースでは、XML スキーマプリミティブ型が Java プリミティブ型の対応するラッパー型にマップされる必要があります。ユースケースには以下が含まれます。

  • 以下に示すように、その nillable 属性が true に設定された element 要素。

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

    <element name="plane" type="xsd:string" minOccurs="0" />
  • 図のように,use 属性が optional または not specified に設定され,default 属性も fixed 属性も指定されていない attribute 要素です。

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

表34.2「プリミティブスキーマタイプから Java ラッパークラスへのマッピング」 は、これらの場合に XML スキーマプリミティブ型が Java ラッパークラスにマップされる方法を示しています。

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

スキーマタイプ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