我们有一个xsd模式,它概述了我们系统中所有可能的数据元素,一些是简单的类型元素,一些是复杂的类型。我们将此架构提供给另一位将尝试使用SOAP编写Web服务的开发人员。哑巴样本中的xsd看起来像这样。
<xs:element name="Element1"> .... </xs:element>
<xs:element name="Element2"> .... </xs:element>
<xs:element name="Element3"> .... </xs:element>
<xs:element name="Element4"> .... </xs:element>
我计划通过调用他的WebService方法将数据发送给他。由于我的系统生成的消息类型,我将有两种类型的消息。第一个包含Element1和Element4,而第二个包含Element3,Element4和Element1。那他有什么选择呢?
在第二次选择中,它是否会生成任何架构验证错误?如果是这样有办法解决它?我可以向他发送一个自定义SOAP标头来指示我发送的消息类型,以便他可以针对特定的xsd元素进行验证吗?
我对WebService比较陌生,所以如果我误解了SOAP,XSD和WebService的基本机制,请随意指出它们或纠正我上面的任何假设。
答案 0 :(得分:0)
我认为他只能制作一个网络服务。
我也不太喜欢XSD,但就我所知,有一个minOccurs
属性可以使这个只用一个web服务。例如:
<!--The syntax may be incorrect-->
<xsd:complexType name="yourtype">
<xsd:sequence>
<xsd:element name="Element1" minOccurs="1" maxOccurs="1" .../>
<xsd:element name="Element2" minOccurs="0" maxOccurs="1" ..../>
<xsd:element name="Element3" minOccurs="1" maxOccurs="1" ..../>
<xsd:element name="Element4" minOccurs="1" maxOccurs="1" ..../>
</xsd:sequence>
</xsd:complexType>
查看minOccurs="0"
,这意味着其他程序员可以省略Element2
。如果你想要一些元素重复0或N次,你可以放maxOccurs="unbounded".