WSDL 设计 XML 模式注意事项(四)

日期: 2007-12-17 作者:Shawn X. K. Hu 来源:TechTarget中国

  清单 7. 采用 Venetian Blind 模式的示例 XSD
    
<xs:element name=”Employee” type=”EmployeeType”/>
<xs:complexType name=”EmployeeType”>
      <xs:sequence>
 <xs:element name=”ErpPerson” type=”ErpPersonType”/>
 <xs:element name=”ErpAddress” type=”ErpAddressType”/>
      </xs:sequence>
</xs:complexType>
<xs:complexType name=”ErpPersonType”>
      <xs:sequence>
 <xs:element name=”lastName” type=”xs:string”/>
 <xs:element name=”firstName” type=”xs:string”/>
 <xs:element name=”mName” type=”xs:string”/>
      </xs:sequence>
</xs:complexType>
<xs:complexType name=”ErpAddressType”>
      <xs:sequence>
 <xs:element name=”streetNumber” type=”xs:string”/>
 <xs:element name=”streetName” type=”xs:string”/>
 <xs:element name=”suiteNumber” type=”xs:string”/>
 <xs:element name=”city” type=”xs:string”/>
 <xs:element name=”stateOrProvince” type=”xs:string”/>
 <xs:element name=”country” type=”xs:string”/>
 <xs:element name=”postalCode” type=”xs:string”/>
      </xs:sequence>
</xs:complexType>
   
  此模式可以用于在 WSDL 中定义 Document 和 RPC 样式的 Employee 消息,因为其中既包括全局级别的元素,也包括类型。不过,它并不支持 ErpPerson 和 ErpAddress 的 Document 样式的消息,因为二者都仅定义为了“complexType”。采用 Venetian Blind 模式的 Employee 模式可用于使用以下消息定义 WSDL:

  Document 绑定样式的 Employee 消息
  RPC 绑定样式的 Employee 消息
  RPC 绑定样式的 ErpPerson 消息
  RPC 绑定样式的 ErpAddress 消息

  对应的 WSDL <message> 和 <binding> 定义如下:

  清单 8. Document 样式的 Employee 消息的 WSDL 定义
    

   <wsdl:message name=”publishEmployeeServiceRequest”>
     <wsdl:part name=”employee” element=”typeIn:Employee”>
       <wsdl:documentation>publish employee information</wsdl:documentation>
     </wsdl:part>
   </wsdl:message>

   <wsdl:binding … >
     <soap:binding … />
     <wsdl:operation name=”publishEmployeeService”>
       <soap:operation  style=”document”/>
       <wsdl:input name=”employee”>
         <soap:body use=”literal”/>
       </wsdl:input>
       ….
     </wsdl:operation>
   </wsdl:binding>

  清单 9. RPC 样式的 Employee 消息的 WSDL 定义
    

   <wsdl:message name=”publishEmployeeServiceRequest”>
     <wsdl:part name=”employee” type=”typeIn:EmployeeType”>
       <wsdl:documentation>publish employee information</wsdl:documentation>
     </wsdl:part>
   </wsdl:message>

   <wsdl:binding … >
     <soap:binding … />
     <wsdl:operation name=”publishEmployeeService”>
       <soap:operation  style=”rpc”/>
       <wsdl:input name=”employee”>
         <soap:body use=”literal”
     namespace=”http://someCompany.com/soa/2006-07-01/publishEmployeeService”/>
       </wsdl:input>
       ….
     </wsdl:operation>
   </wsdl:binding>

  清单 10. RPC 样式的 ErpPerson 消息的 WSDL 定义
    

   <wsdl:message name=”publishErpPersonServiceRequest”>
     <wsdl:part name=”erpPerson” type=”typeIn:ErpPersonType”>
       <wsdl:documentation>publish employee data</wsdl:documentation>
     </wsdl:part>
   </wsdl:message>

   <wsdl:binding … >
     <soap:binding … />
     <wsdl:operation name=”publishErpPersonService”>
       <soap:operation  style=”rpc”/>
       <wsdl:input name=”erpPerson”>
         <soap:body use=”literal”
     namespace=”http://someCompany.com/soa/2006-07-01/publishErpPersonService”/>
       </wsdl:input>
       ….
     </wsdl:operation>
   </wsdl:binding>
 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐