xmlschema序列中无界元素的顺序

时间:2013-05-02 15:53:05

标签: soap wsdl xsd axis2

我目前正在开发一个使用webservices(SOAP 1.2)的应用程序。我很想知道我是否可以依赖xmlschema序列中无界元素的顺序。这是我在wsdl中使用的那个序列的定义。

<xsd:complexType name="IdList">
  <xsd:sequence>
    <xsd:element maxOccurs="unbounded" minOccurs="0" name="id" type="xsd:integer"/>
  </xsd:sequence>
</xsd:complexType>

这是否能给我任何关于元素顺序的保证?假设这是相关肥皂消息的摘录:

<web:globalRecipientIds>
  <!--Zero or more repetitions:-->
  <web:id>1</web:id>
  <web:id>15</web:id>
  <web:id>7</web:id>
</web:globalRecipientIds>

这是否意味着接收端会按照它在SOAP消息中出现的顺序对待它?这取决于接收端的实现吗?如果是这样,我使用来自apache轴的wsdl2java生成接收端,以从wsdl文件生成java代码。你能告诉我一些具体的事情吗?

1 个答案:

答案 0 :(得分:2)

XML元素的顺序是有意义的 - 无论模式如何 - 例如

<web:globalRecipientIds>
  <web:id>1</web:id>
  <web:id>15</web:id>
  <web:id>7</web:id>
</web:globalRecipientIds>

<web:globalRecipientIds>
  <web:id>15</web:id>
  <web:id>1</web:id>
  <web:id>7</web:id>
</web:globalRecipientIds>

是两种不同的XML,XML工具(应该)保留并识别元素的顺序。

话虽如此,这并不能保证接收端会按照它在SOAP消息中出现的顺序对待它。 - 取决于接收端对XML的作用。它接收一个有序的id列表,但是如果(例如)将这些id放入字典或其他散列结构中,则命令会丢失。