WSDL中的可选消息部分

时间:2011-11-30 11:01:25

标签: soap wsdl

在我的wsdl:消息中,我有两个参数,firstname和lastname:

<message name="setName">
  <part name="firstname" type="xsd:string"></part>
  <part name="lastname" type="xsd:string"></part>
</message> 

我想根据需要定义“firstname”部分,并将“lastname”部分定义为可选。 我该怎么做?

2 个答案:

答案 0 :(得分:18)

在WSDL中,部件不能是可选的。他们总是需要的。如果您需要可选部件,则必须创建一个引用XSD complexType的部件,然后该部件可以包含可选元素。

答案 1 :(得分:5)

您可以将 nullable 添加到 lastname ,因此 firstname 是必需的:

<message name="setName">
    <part name="firstname" type="xsd:string"></part>
    <part name="lastname" xsi:nil="true" type="xsd:string"></part>
</message> 

如果您这样做,您的肥皂体看起来像(空或填充的姓氏):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:user="http://www.example.com/MyService/">
   <soapenv:Header/>
   <soapenv:Body>
      <user:setName>
         <firstname>John</firstname>
         <lastname></lastname>
      </user:setName>
   </soapenv:Body>
</soapenv:Envelope>

甚至没有姓氏

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:user="http://www.example.com/MyService/">
   <soapenv:Header/>
   <soapenv:Body>
      <user:setName>
         <firstname>John</firstname>
      </user:setName>
   </soapenv:Body>
</soapenv:Envelope>