I've received a first version of a WSDL with his schemas whith the following type:
<xs:complexType name="AComplexType">
<xs:sequence>
<xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="version" nillable="true" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Response">
<xs:sequence>
<xs:element minOccurs="0" name="responseDescription" nillable="true" type="xs:int"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="listOfElements" nillable="true" type="AComplexType"/>
</xs:sequence>
</xs:complexType>
The following xml is valid for the xsd above:
<Response>
<responseDescription>A response description</responseDescription>
<listOfElements>
<description>An element descrition</description>
<version>1</version>
<description>Another element descrition</description>
<version>1</version>
...
</listOfElements>
</Response>
Also, I was able to create classes for this types with xjc, so it seems that this is a valid schema.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Response", propOrder = {
"responseDescription",
"listOfElements"
})
public class ConsultaExpedienteGATResponse {
@XmlElementRef(name = "estado", namespace = "...", type = JAXBElement.class, required = false)
protected JAXBElement<String> responseDescription;
@XmlElement(nillable = true)
protected List<AComplexType> listOfElements;
...
}
However, I thought that this kind of schemas were invalid and should be like this:
<xs:complexType name="Response">
<xs:sequence>
<xs:element minOccurs="0" name="responseDescription" nillable="true" type="xs:int"/>
<xs:element name="listOfElements">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="oneElement" type="AComplexType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
With this schema, the xml is slightly different:
<Response>
<responseDescription>A response description</responseDescription>
<listOfElements>
<oneElement>
<description>An element descrition</description>
<version>1</version>
</oneElement>
<oneElement>
<description>Another element descrition</description>
<version>1</version>
</oneElement>
...
</listOfElements>
</Response>
So, I wonder if there are pros/cons for each option (for example better performance parsing the xml) or if one of the two is the adopted or default choice.