Listing 1. Service Definition

<?xml version="1.0"?>
<!-- specific service bindings document -->
<definitions name="FundValuation" targetNamespace="http://enterprise.com/services/fundvaluation/service"
 xmlns:tns="http://enterprise.com/services/fundvaluation/service" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:defs="http://enterprise.com/services/fundvaluation/definitions" xmlns="http://schemas.xmlsoap.org/wsdl/">
	
	<import namespace="http://enterprise.com/services/fundvaluation/definitions"
	 location="http://enterprise.com/services/fundvaluation/FundValuationInterface.wsdl"/>
	
	<binding name="FundValuationSoapBinding" type="defs:FundValuationPortType">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<operation name="ValuateFund">
			<soap:operation soapAction="http://enterprise.com/services/ValuateFund"/>
			<input>
				<soap:body use="literal"/>
			</input>
			<output>
				<soap:body use="literal"/>
			</output>
			<fault>
				<soap:fault name="FundValuationException" use="literal"/>
			</fault>
		</operation>
	</binding>
	
	<service name="FundValuationService">
		<documentation>mutial fund valuation</documentation>
		<port name="FundValuationPort" binding="tns:FundValuationBinding">
			<soap:address location="http://enterprise.com/services/fundvaluation"/>
		</port>
	</service>
</definitions>


Listing 2. Interface Definition

<?xml version="1.0"?>
<!-- abstract interface definitions document -->
<definitions name="FundValuation" targetNamespace="http://enterprise.com/services/fundvaluation/definitions"
 xmlns:tns="http://enterprise.com/services/fundvaluation/definitions" 
 xmlns:xsd-request="http://enterprise.com/services/fundvaluation/schemas/request" 
 xmlns:xsd-response="http://enterprise.com/services/fundvaluation/schemas/response" 
 xmlns:xsd-fault="http://enterprise.com/services/fundvaluation/schemas/fault"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">

	<import namespace="http://enterprise.com/services/fundvaluation/schemas/request"
	 location="http://enterprise.com/services/fundvaluation/FundValuationRequest.xsd"/>
	<import namespace="http://enterprise.com/services/fundvaluation/schemas/response"
	 location="http://enterprise.com/services/fundvaluation/FundValuationResponse.xsd"/>
	<import namespace="http://enterprise.com/services/fundvaluation/schemas/fault"
	 location="http://enterprise.com/services/fundvaluation/FundValuationException.xsd"/>
	
	<message name="ValuateFundRequest">
		<part name="body" element="xsd-request:FundValuationRequest"/>
	</message>
	<message name="ValuateFundRsponse">
		<part name="body" element="xsd-response:ValuateFundRsponse"/>
	</message>
	<message name="FundValuationException">
		<part name="fault" element="xsd-fault:FundValuationException"/>
	</message>
	
	<portType name="ValuateFundPortType">
		<operation name="valuateFund">
			<input message="tns:ValuateFundRequest"/>
			<output message="tns:ValuateFundRsponse"/>
			<fault name="FundValuationException" message="tns:FundValuationException"/>
		</operation>
	</portType>
</definitions>


Listing 3. Basic Request Message Schema

<?xml version="1.0"?>
<schema
elementFormDefault="qualified"
targetNamespace="http://enterprise.com/services/fundvaluation/schemas/request"
xmlns="http://www.w3.org/2001/XMLSchema">
       
    <element name="FundValuationRequest">
        <complexType>
            <all>
            
                <element name="valuate" minOccurs="0" maxOccurs="1">
    			<complexType>
     				<sequence>
      				<element name="fundName" nillable="true" type="string"/>
      				<element name="fundID" nillable="false" type="string"/>
      				<element name="requesterID" nillable="false" type="string"/>
     				</sequence>
    			</complexType>
                </element>
                
            </all>
        </complexType>
    </element>
        
</schema>


Listing 4. Basic Response Message Schema

<?xml version="1.0"?>
<schema 
elementFormDefault="qualified"
targetNamespace="http://enterprise.com/services/fundvaluation/schemas/response"
xmlns="http://www.w3.org/2001/XMLSchema">
       
    <element name="FundValuationResponse">
        <complexType>
            <choice>
                <element name="valuation" type="string"/>
                <element name="emptyRequest" type="string"/>
            </choice>
        </complexType>
    </element>

</schema>


Listing 5. Basic Fault Message Schema

<?xml version="1.0"?>
<schema 
elementFormDefault="qualified"
targetNamespace="http://enterprise.com/services/fundvaluation/schemas/fault"
xmlns="http://www.w3.org/2001/XMLSchema">
       
    <element name="FundValuationException">
        <complexType>
            <choice>
            
                <element name="serviceResourceUnavailable">
    			<complexType>
     				<sequence>
      				<element name="fundName" nillable="true" type="string"/>
      				<element name="fundID" nillable="false" type="string"/>
      				<element name="requesterID" nillable="false" type="string"/>
     				</sequence>
    			</complexType>
                </element>
                              
            </choice>
        </complexType>
    </element>
        
</schema>

Listing 6. Basic Request Message Schema Extension

<?xml version="1.0"?>
<schema 
elementFormDefault="qualified"
targetNamespace="http://enterprise.com/services/fundvaluation/schemas/request"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:store="http://enterprise.com/services/fundvaluation/schemas/request/store">

<import namespace="http://enterprise.com/services/fundvaluation/schemas/request/store"
 location="http://enterprise.com/services/fundvaluation/FundValuationRequestStore.xsd"/>
           <element name="FundValuationRequest">
        <complexType>
            <all>
            
                <element name="valuate" minOccurs="0" maxOccurs="1">
    			<complexType>
     				<sequence>
      				<element name="fundName" nillable="true" type="string"/>
      				<element name="fundID" nillable="false" type="string"/>
      				<element name="requesterID" nillable="false" type="string"/>
     				</sequence>
    			</complexType>
                </element>
                <element name="store:store" minOccurs="0" maxOccurs="1"/>
                </element>
            </all>
        </complexType>
    </element>
        
</schema>

Listing 7. Store Schema

<?xml version="1.0"?>
<schema 
elementFormDefault="qualified"
 targetNamespace="http://enterprise.com/services/fundvaluation/schemas/request/store"
xmlns="http://www.w3.org/2001/XMLSchema">

    <element name="store">
        <complexType>
   		<sequence>
      				<element name="fundName" nillable="true" type="string"/>
      				<element name="fundID" nillable="false" type="string"/>
      				<element name="requesterID" nillable="false" type="string"/>
                </sequence>
        </complexType>
    </element>
        
</schema>

Listing 8. Another Basic Request Message Schema Extension

<?xml version="1.0"?>
<schema 
elementFormDefault="qualified"
targetNamespace="http://enterprise.com/services/fundvaluation/schemas/request"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:store="http://enterprise.com/services/fundvaluation/schemas/request/store"
xmlns:notify="http://enterprise.com/services/fundvaluation/schemas/request/store">

<import namespace="http://enterprise.com/services/fundvaluation/schemas/request/store"
 location="http://enterprise.com/services/fundvaluation/FundValuationRequestStore.xsd"/>
<import namespace="http://enterprise.com/services/fundvaluation/schemas/request/notify"
 location="http://enterprise.com/services/fundvaluation/FundValuationRequestNotify.xsd"/>
       
    <element name="FundValuationRequest">
        <complexType>
            <all>
                <element name="valuate" minOccurs="0" maxOccurs="1">
	             <complexType>
     				<sequence>
      					<element name="fundName" nillable="true" type="string"/>
      					<element name="fundID" nillable="false" type="string"/>
      					<element name="requesterID" nillable="false" type="string"/>
				</sequence>
    			</complexType>
               </element>

		  <element name="store:store" minOccurs="0" maxOccurs="1"/>

		 <element name="notify:notify " minOccurs="0" maxOccurs="1"/>

            </all>

        </complexType>
    </element>
</schema>

Listing 9. Notify Schema

<?xml version="1.0"?>
<schema 
elementFormDefault="qualified"
 targetNamespace="http://enterprise.com/services/fundvaluation/schemas/request/notify"
xmlns="http://www.w3.org/2001/XMLSchema">

    <element name="notify">
        <complexType>
   		<sequence>
      				<element name="fundName" nillable="true" type="string"/>
					<element name="fundID" nillable="false" type="string"/>
      				<element name="requesterID" nillable="false" type="string"/>
				<element name="addresseeID" nillable=" true" type="string" minOccurs="0" maxOccurs="unbounded"/>
                </sequence>
        </complexType>
    </element>
        
</schema>


Listing 10. Basic Fault Message Schema Extension

<?xml version="1.0"?>
<schema 
elementFormDefault="qualified"
targetNamespace="http://enterprise.com/services/fundvaluation/schemas/fault"
xmlns="http://www.w3.org/2001/XMLSchema" 
xmlns:notify-fault="http://enterprise.com/services/fundvaluation/schemas/request/fault/notify">

<import namespace="http://enterprise.com/services/fundvaluation/schemas/fault/notify" 
location="http://enterprise.com/services/fundvaluation/ FundValuationException.xsd"/>

    <element name="FundValuationException">
        <complexType>
            <choice>
            
              <element name="serviceResourceUnavailable">
    			<complexType>
     				<sequence>
      					<element name="fundName" nillable="true" type="string"/>
      					<element name="fundID" nillable="false" type="string"/>
      					<element name="requesterID" nillable="false" type="string"/>
				</sequence>
    			</complexType>
                </element>
                
                <element name="notify-fault:valuationNotificationFailure"/>

            </choice>
        </complexType>
    </element>
        
</schema>

Listing 11. Notification Failure Schema

<?xml version="1.0"?>
<schema
elementFormDefault="qualified" targetNamespace="http://enterprise.com/services/fundvaluation/schemas/fault/notify"
xmlns="http://www.w3.org/2001/XMLSchema">

    <element name=" valuationNotificationFailure ">
        <complexType>
   		<sequence>
      			<element name=" addresseeID " nillable="false" type="string" minOccurs="1" maxOccurs="unbounded"/>
             </sequence>
        </complexType>
    </element>
        
</schema>


12. Basic Response Message Schema Extension

<?xml version="1.0"?>
<schema 
elementFormDefault="qualified"
targetNamespace="http://enterprise.com/services/fundvaluation/schemas/response"
xmlns:visibility="http://enterprise.com/services/fundvaluation/schemas/response/visibility"
xmlns="http://www.w3.org/2001/XMLSchema">

<import namespace="http://enterprise.com/services/fundvaluation/schemas/response/visibility"
 location="http://enterprise.com/services/fundvaluation/ FundValuationResponseVisibility.xsd"/>
       
    <element name="FundValuationResponse">
        <complexType>
        
           <choice>
                <element name="valuation" type="string" maxOccurs="1"/>
                <element name="emptyRequest" type="string" maxOccurs="1"/>
                <element name=" visibility:valuation" type="string" maxOccurs="1"/>
         </choice>

        </complexType>
    </element>

</schema>

13. Valuation Visibility Schema

<?xml version="1.0"?>
<schema
elementFormDefault="qualified" targetNamespace="http://enterprise.com/services/fundvaluation/schemas/response/visibility"
xmlns="http://www.w3.org/2001/XMLSchema">

    <element name="valuation" type="string"/>
        
</schema>