Menu Close

2.5.2. 配列の定義

概要

Apache CXF は、コントラクトで配列を定義するための 2 つのメソッドをサポートします。1 つ目は、値が 1 より大きい maxOccurs 属性のある 1 つの要素を持つ複合型を定義します。2 つ目は、SOAP 配列を使用することです。SOAP 配列は、多次元配列を簡単に定義する機能や、過疎な配列を送信する機能などの追加機能を提供します。

複合型配列

複合型配列は、シーケンスで複合型の特別なケースです。単一要素で複合型を定義し、maxOccurs 属性の値を指定するだけです。たとえば、twenty 浮動小数点数の配列を定義するには、例2.9「複合型配列」 に示されるように複合型を使用します。

例2.9 複合型配列

<complexType name="personalInfo">
  <element name="averages" type="xsd:float" maxOccurs="20"/>
</complexType>

minOccurs 属性の値を指定することもできます。

SOAP 配列

SOAP 配列は、wsdl:arrayType 要素を使用して SOAP-ENC:Array 基本型から派生することによって定義されます。この構文は 例2.10「wsdl:arrayType を使用して派生された SOAP 配列の構文」 にあります。definitions 要素が xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" を宣言していることを確認します。

例2.10 wsdl:arrayType を使用して派生された SOAP 配列の構文

<complexType name="TypeName">
  <complexContent>
    <restriction base="SOAP-ENC:Array">
      <attribute ref="SOAP-ENC:arrayType"
                 wsdl:arrayType="ElementType<ArrayBounds>"/>
    </restriction>
  </complexContent>
</complexType>

TypeName は、この構文を使用して、新しく定義された配列型の名前を指定します。ElementType は、配列の要素の型を指定します。ArrayBounds は、配列の次元数を指定します。1 次元配列を指定するには、[] を使用します。2 次元配列を指定するには、[][] または [,] を使用します。

たとえば、例2.11「SOAP 配列の定義」 に示されている SOAP Array、SOAPStrings は文字列の 1 次元配列を定義します。wsdl:arrayType 属性は、配列要素の型 xsd:string を指定し、次元の数 [] は 1 次元を意味します。

例2.11 SOAP 配列の定義

<complexType name="SOAPStrings">
  <complexContent>
    <restriction base="SOAP-ENC:Array">
      <attribute ref="SOAP-ENC:arrayType"
                 wsdl:arrayType="xsd:string[]"/>
    </restriction>
  </complexContent>
</complexType>

SOAP 1.1 仕様で説明されているように、単純な要素を使用して SOAP 配列を記述することもできます。この構文は 例2.12「要素を使用して派生された SOAP 配列の構文」 にあります。

例2.12 要素を使用して派生された SOAP 配列の構文

<complexType name="TypeName">
  <complexContent>
    <restriction base="SOAP-ENC:Array">
      <sequence>
        <element name="ElementName" type="ElementType"
                 maxOccurs="unbounded"/>
      </sequence>
    </restriction>
  </complexContent>
</complexType>

この構文を使用する場合は、要素の maxOccurs 属性は常に unbounded に設定する必要があります。