【发布时间】:2016-10-05 12:59:22
【问题描述】:
我收到了第一个版本的 WSDL,其中包含以下类型的模式:
<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>
以下xml对上面的xsd有效:
<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>
另外,我可以使用 xjc 为这种类型创建类,所以这似乎是一个有效的模式。
@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;
...
}
但是,我认为这种模式是无效的,应该是这样的:
<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>
使用此架构,xml 略有不同:
<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>
所以,我想知道每个选项是否有优缺点(例如解析 xml 的性能更好),或者两者中的一个是采用还是默认选择。
【问题讨论】:
标签: xml xsd jaxb xsd-validation