Этот вопрос старше греха, но на него никогда не отвечали, и я изо всех сил пытался найти ответ, когда недавно столкнулся с той же проблемой. Возможно, есть лучший способ сделать это, но то, что я в конечном итоге сделал, было что-то вроде этого.
На самом деле это даже уровень дальше, трехмерный массив, но общий принцип тот же.
<xs:element name="myOtherArray">
<xs:complexType>
<xs:sequence>
<xs:element name="someInsideArrayProperty" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:element name="myArray">
<xs:complexType>
<xs:sequence>
<xs:element name="someArrayProperty" type="xs:string"/>
<xs:element name="yetAnotherArray" maxOccurs="unbounded" type="ns:myOtherArray"/>
</xs:sequence>
</xs:complexType>
<xs:element name="myResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="myResponseArray" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="someProperty" type="xs:int"/>
<xs:element name="someOtherProperty" type="xs:string"/>
...
<xs:element name="anotherArray" type="ns:myArray" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>