Xml 应该是wsdl+;xsd的设计方式应该是可以直接看到消息的内容是什么?

Xml 应该是wsdl+;xsd的设计方式应该是可以直接看到消息的内容是什么?,xml,web-services,wsdl,xsd,Xml,Web Services,Wsdl,Xsd,我正在为具有多个属性的对象实现CRUD web服务。我应该像这样定义一个类型吗 <xs:complexType name="tProject"> <xs:sequence> <xs:element name="id" type="xs:int" minOccurs="0" /> <xs:element name="projectname" type="xs:string" minOccurs="0" /> <xs:element

我正在为具有多个属性的对象实现CRUD web服务。我应该像这样定义一个类型吗

<xs:complexType name="tProject">
 <xs:sequence>
  <xs:element name="id" type="xs:int" minOccurs="0" />
  <xs:element name="projectname" type="xs:string" minOccurs="0" />
  <xs:element name="projectnum" type="xs:string" minOccurs="0" />
  <xs:element name="description" type="xs:string" minOccurs="0" />

  <!-- here another 30-some attributes -->
 </xs:sequence>
</xs:complexType>

并将其用于所有操作:

  • GetProject请求和响应都包含tProject。作为响应,所有字段都将存在,但请求应包含用于标识项目的键列(id和/或projectname)。这是消费者必须知道的,在接口描述中没有明确说明

  • UpdateProject请求应包含键列(id和/或projectname)和更新的列。再次强调,仅通过检查接口是无法知道的,因为所有都是minOccurs=“0”

  • CreateProject请求应该包含一些最初希望用于项目的字段。该id由WS创建,必须发送回使用者。响应将再次是tProject,但其中只有id

  • 当我在这里写它时,它已经感觉到它违反了wsdl设计的所有内容

    我试着回答我自己的问题。我希望我能得到更好的答案,但如果能告诉大家我的下一个方法有什么问题,那就太好了:

    <!-- only updatable fielsds here -->
    <xs:complexType name="tProjectBase">
     <xs:sequence>
       <xs:element name="projectnum" type="xs:string" minOccurs="0" />
       <xs:element name="description" type="xs:string" minOccurs="0" />
       <xs:element name="accepteddate" type="xs:dateTime" minOccurs="0" />
       <xs:element name="activeyears" type="xs:int" minOccurs="0" />
     </xs:sequence>
    </xs:complexType>
    
    <!-- extending updateble with keys and not updateble -->
    <xs:complexType name="tProject">
     <xs:complexContent>
      <xs:extension base="tProjectBase">
        <xs:sequence>
          <xs:element name="id" type="xs:int" />
          <xs:element name="projectname" type="member"/>
          <xs:element name="projectcreator" type="xs:string" /> <!--not updatable-->
        </xs:sequence>
      </xs:extension>
     </xs:complexContent>
    </xs:complexType>
    
    <!-- only keys here -->
    <xs:complexType name="tProjectKeys">
      <xs:choice>
       <xs:element name="id" type="xs:int"/>
       <xs:element name="projectname" type="xs:string"/>
      </xs:choice>
    </xs:complexType>
    
    
    <xs:element name="tUpdateProject">
     <xs:complexType>
      <xs:sequence>
        <xs:element name="keys" type="tProjectKeys" />
        <xs:element name="project" type="tProjectBase" />
      </xs:sequence>
     </xs:complexType>
    </xs:element>
    
    
    <xs:element name="tCreateProject">
     <xs:complexType>
      <xs:sequence>
        <xs:element name="projectcreator" type="xs:string />
        <xs:element name="project" type="tProjectBase" />
      </xs:sequence>
     </xs:complexType>
    </xs:element>