A. UserService WSDL Definitionen

<?xml version="1.0"?>
<definitions name="UserService" 
   targetNamespace="http://www.infogrips.ch/geoshop/user/"
   xmlns:tns="http://www.infogrips.ch/geoshop/user/"
   xmlns:types="http://www.infogrips.ch/geoshop/types/"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns="http://schemas.xmlsoap.org/wsdl/">
  
   <types>
      <xsd:schema targetNamespace="http://www.infogrips.ch/geoshop/types/">

         <xsd:complexType name="StringList">
            <xsd:sequence>
               <xsd:element name="item" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
         </xsd:complexType> 

         <xsd:complexType name="Product">
            <xsd:sequence>
               <xsd:element name="name" type="xsd:string"/>
               <xsd:element name="display_name" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType> 
         <xsd:complexType name="Products">
            <xsd:sequence>
               <xsd:element name="product" type="types:Product" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
         </xsd:complexType>

         <xsd:complexType name="Topics">
            <xsd:sequence>
               <xsd:element name="topic" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
         </xsd:complexType>

         <xsd:complexType name="Model">
            <xsd:sequence>
               <xsd:element name="name" type="xsd:string"/>
               <xsd:element name="display_name" type="xsd:string"/>
               <xsd:element name="topics" type="types:Topics"/>
            </xsd:sequence>
         </xsd:complexType> 
         <xsd:complexType name="Models">
            <xsd:sequence>
               <xsd:element name="model" type="types:Model" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
         </xsd:complexType>

         <xsd:complexType name="Option">
            <xsd:sequence>
               <xsd:element name="name" type="xsd:string"/>
               <xsd:element name="value" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:complexType name="Options">
            <xsd:sequence>
               <xsd:element name="option" type="types:Option" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
         </xsd:complexType>
 
         <xsd:complexType name="SelectionFormat">
            <xsd:sequence>
               <xsd:element name="format" type="xsd:string"/>
               <xsd:element name="orientation" type="xsd:string"/>
               <xsd:element name="scales" type="xsd:string"/>
               <xsd:element name="format_defualt" type="xsd:string"/>
               <xsd:element name="orientation_default" type="xsd:string"/>
               <xsd:element name="scale_default" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType> 
         <xsd:complexType name="SelectionFormats">
            <xsd:sequence>
               <xsd:element name="selection_format" type="types:SeletionFormat" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
         </xsd:complexType>

         <xsd:complexType name="Params">
            <xsd:sequence>
               <xsd:element name="selection_type" type="xsd:string"/>
               <xsd:element name="selection_rotate" type="xsd:string"/>
               <xsd:element name="selection_formats" type="types:SelectionFormats"/>
               <xsd:element name="selection_options" type="types:Options"/>
               <xsd:element name="topic_selection_visible" type="xsd:string"/>
               <xsd:element name="order_la_options" type="types:Options"/>
               <xsd:element name="order_ra_option" type="xsd:string"/>
               <xsd:element name="order_ra_options" type="types:Options"/>
            </xsd:sequence>
         </xsd:complexType>

         <xsd:complexType name="ProductDefinition">
            <xsd:sequence>
               <xsd:element name="name" type="xsd:string"/>
               <xsd:element name="display_name" type="xsd:string"/>
               <xsd:element name="models" type="types:Models"/>
               <xsd:element name="params" type="types:Params"/>
               <xsd:element name="price_function" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType>

      </xsd:schema>
   </types>

   <message name="getUser">
      <part name="user" type="xsd:string"/>
      <part name="password" type="xsd:string"/>
   </message>
   <message name="getUserResponse">
   </message>
  
   <message name="getProducts">
      <part name="user" type="xsd:string"/>
      <part name="password" type="xsd:string"/>
   </message>
   <message name="getProductsResponse">
      <part name="products" type="types:Products"/>
   </message>
  
   <message name="getProductDefinition">
      <part name="user" type="xsd:string"/>
      <part name="password" type="xsd:string"/>
      <part name="product" type="xsd:string"/>
   </message>
   <message name="getProductDefinitionResponse">
      <part name="productDefinition" type="types:ProductDefinition"/>
   </message>
  
   <portType name="UserServicePortType">
      <operation name="getUser">
         <input message="tns:getUserRequest"/>
         <output message="tns:getUserResponse"/>
      </operation>
      <operation name="getProducts">
         <input message="tns:getProductsRequest"/>
         <output message="tns:getProductsResponse"/>
      </operation>
      <operation name="getProductDefinition">
         <input message="tns:getProductDefinitionRequest"/>
         <output message="tns:getProductDefinitionResponse"/>
      </operation>
   </portType>
  
   <binding name="UserServiceBinding" type="tns:UserServicePortType">

      <soap:binding 
         style="rpc"
         transport="http://schemas.xmlsoap.org/soap/http"/>

      <operation name="getUser">
         <soap:operation soapAction=""/>
         <input name="getUserRequest">
            <soap:body 
               use="literal"
               namespace="http://www.infogrips.ch/geoshop/user/"/>
         </input>
         <output name="getUserResponse">
            <soap:body
               use="literal"
               namespace="http://www.infogrips.ch/geoshop/user/"/>
         </output>
      </operation>

      <operation name="getProduct">
         <soap:operation soapAction=""/>
         <input name="getProductRequest">
            <soap:body 
               use="literal"
               namespace="http://www.infogrips.ch/geoshop/user/"/>
         </input>
         <output name="getProductResponse">
            <soap:body
               use="literal"
               namespace="http://www.infogrips.ch/geoshop/user/"/>
         </output>
      </operation>

      <operation name="getProductDefinition">
         <soap:operation soapAction=""/>
         <input name="getProductDefinitionRequest">
            <soap:body 
               use="literal"
               namespace="http://www.infogrips.ch/geoshop/user/"/>
         </input>
         <output name="getProductDefinitionResponse">
            <soap:body
               use="literal"
               namespace="http://www.infogrips.ch/geoshop/user/"/>
         </output>
      </operation>

   </binding>
  
   <service name="UserService">
      <documentation>
         User service for GeoShop Server
      </documentation>
      <port name="GeoShopPort" binding="tns:UserServiceBinding">
         <soap:address location=
            "http://localhost:3501/soap/UserService.igs"
         />
      </port>
   </service>

</definitions>