Я получил первую версию WSDL с его схемами ти следующего типа:Каждый элемент коллекции должен идти между их соответствующими в XSD?
<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) или если один из двух является принятым или выбранным по умолчанию.
Да, он полагается на смежность, и именно поэтому я думал, что это неверно, потому что оно кажется очень «хрупким». Кроме того, когда я говорю о производительности, я думал о том, как синтаксический анализатор знает, что один элемент завершается, а другой запускается (кажется, больше работы, которые зависят от начальных и конечных тегов). С другой стороны, мы можем думать, что в первом варианте использование большей пропускной способности из-за меньшего количества тегов. – gabrielgiussi
Я согласен с вами в том, что первый вариант лучше подходит для ориентированного на данные XML, но у меня нет серьезных причин отклонять предложенные схемы другой командой. – gabrielgiussi
Первый вариант зависит от смежности и лучше подходит для *** документа *** ориентированного XML. (Ваш комментарий имеет обратную сторону, возможно, опечатку.) Идите со вторым вариантом, который лучше подходит для ориентированного на данные XML, который у вас есть, и будет лучше отображаться для объектов, если вам когда-либо понадобится это делать. Опять же, производительность просто не проблема. Вы никогда не дойдете до такой степени, что накладные расходы на разметку станут узким местом для вашей системы. – kjhughes