WSD WG f2f ws reference examples

Examples for ws reference presentation at W3C WSD f2f Sep 2003

Example 1A

Fully static type information. Neither the interface nor binding of the Manager and Engineer services are sent in the
message. Both the interface and binding service type information is described in the Department WSDL using derived types
of xs:anyUri.

<soap:Envelope>
	<soap:Body>
	<hr:Department deptNo="123" xmlns:hr="http://hr.example.com">
		<hr:Manager>http://hr.example.com/employee/smith/judy</hr:Manager>
		<hr:Engineer>http://hr.example.com/employee/jones/tom</hr:Engineer>
		<hr:Engineer>http://hr.example.com/employee/lee/jin</hr:Engineer>
	</hr:Department>
	</soap:Body>
</soap:Envelope>

<wsdl:definitions targetnamespace="http://hr.example.com"
	xmlns:hr="http://hr.example.com">

	<wsdl:types>
		<xs:schema targetnamespace="http://hr.example.com">

			<xs:simpleType name="ManagerReference">
				<xs:restriction base="xs:anyUri"/>
			</xs:simpleType>

			<xs:simpleType name="EngineerReference">
				<xs:restriction base="xs:anyUri"/>
			</xs:simpleType>

			<xs:element name="DepartmentNumber" type="xs:string"/>

			<xs:element name="Department">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Manager" type="hr:ManagerReference"/>
						<xs:element name="Engineer" type="hr:EngineerReference"
							minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="deptno" type="xs:string"/>
				</xs:complexType>
			</xs:element>

		</xs:schema>
	</wsdl:types>

	<wsdl:interface name="Manager">...</wsdl:interface>

	<wsdl:interface name="Engineer">...</wsdl:interface>

	<wsdl:interface name="Department">
		<wsdl:operation name="getDepartment">
			<wsdl:input body="hr:DepartmentNumber"/>
			<wsdl:output body="hr:Department">
				<wsdl:reference type="hr:ManagerReference" interface="hr:Manager"/>
				<wsdl:reference type="hr:EngineerReference" interface="hr:Engineer"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:interface>

	<wsdl:binding name="ManagerSOAP" interface="hr:Manager"/>

	<wsdl:binding name="EngineerSOAP" interface="hr:Engineer"/>

	<wsdl:binding name="DepartmentSOAP" interface="hr:Department">
		<soap:binding ... />
		<wsdl:operation name="getDepartment">
			<wsdl:input>...</wsdl:input>
			<wsdl:output>
				<wsdl:reference type="hr:ManagerReference" binding="hr:ManagerSOAP"/>
				<wsdl:reference type="hr:EngineerReference" binding="hr:EngineerSOAP"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>

	<wsdl:service name="DepartmentService" interface="hr:Department">
		<wsdl:endpoint name="DepartmentServiceSOAP" binding="hr:DepartmentSOAP">
			<soap:address location="http://hr.example.com/department"/>
		</wsdl:endpoint>
	</wsdl:service>	

</wsdl:definitions>--=_mixed 007271B285256DAA_Content-Type: text/plain; name="example2a-1.txt"
Content-Disposition: attachment; filename="example2a-1.txt"
Content-Transfer-Encoding: quoted-printable

Example 2A

Partially dynamic type information. Both the interface and binding of the Manager and Engineer services are sent in the
message using derived types of wsdl:Service. Only the interface service type information is described in the Department WSDL.

<soap:Envelope>
	<soap:Body>
	<hr:Department deptNo="123" xmlns:hr="http://hr.example.com" 
		wsdl:descriptionLocation="http://hr.example.com http://hr.example.com/department.wsdl">
		<hr:Manager interface="hr:Manager">
			<wsdl:endpoint binding="hr:ManagerSOAP">
				<soap:address location="http://hr.example.com/employee/smith/judy">
			</wsdl:endpoint>
		</hr:Manager>
		<hr:Engineer interface="hr:Engineer">
			<wsdl:enpoint binding="hr:EngineerSOAP">
				<soap:address location="http://hr.example.com/employee/jones/tom"/>
			</wsdl:endpoint>
		</hr:Engineer>
		<hr:Engineer interface="hr:Engineer">
			<wsdl:enpoint binding="hr:EngineerSOAP">
				<soap:address location="http://hr.example.com/employee/lee/jin"/>
			</wsdl:endpoint>
		</hr:Engineer>
	</hr:Department>
	</soap:Body>
</soap:Envelope>

<wsdl:definitions targetnamespace="http://hr.example.com"
	xmlns:hr="http://hr.example.com">

	<wsdl:types>
		<xs:schema targetnamespace="http://hr.example.com">

			<xs:complexType name="ManagerReference">
				<xs:complexContent>
					<xs:extension base="wsdl:Service"/>
				<xs:complexContent>
			</xs:complexType>

			<xs:complexType name="EngineerReference">
				<xs:complexContent>
					<xs:extension base="wsdl:Service"/>
				<xs:complexContent>
			</xs:complexType>

			<xs:element name="DepartmentNumber" type="xs:string"/>

			<xs:element name="Department">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Manager" type="hr:ManagerReference"/>
						<xs:element name="Engineer" type="hr:EngineerReference"
							minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="deptno" type="xs:string"/>
				</xs:complexType>
			</xs:element>

		</xs:schema>
	</wsdl:types>

	<wsdl:interface name="Manager">...</wsdl:interface>

	<wsdl:interface name="Engineer">...</wsdl:interface>

	<wsdl:interface name="Department">
		<wsdl:operation name="getDepartment">
			<wsdl:input body="hr:DepartmentNumber"/>
			<wsdl:output body="hr:Department">
				<wsdl:reference type="hr:ManagerReference" interface="hr:Manager"/>
				<wsdl:reference type="hr:EngineerReference" interface="hr:Engineer"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:interface>

	<wsdl:binding name="ManagerSOAP" interface="hr:Manager"/>

	<wsdl:binding name="EngineerSOAP" interface="hr:Engineer"/>

	<wsdl:binding name="DepartmentSOAP" interface="hr:Department">
		<soap:binding ... />
		<wsdl:operation name="getDepartment">
			<wsdl:input>...</wsdl:input>
			<wsdl:output>...</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>

	<wsdl:service name="DepartmentService" interface="hr:Department">
		<wsdl:endpoint name="DepartmentServiceSOAP" binding="hr:DepartmentSOAP">
			<soap:address location="http://hr.example.com/department"/>
		</wsdl:endpoint>
	</wsdl:service>	

</wsdl:definitions>--=_mixed 007271B285256DAA_=--

Example 3A

Fully dynamic type information. Both the interface and binding of the Manager and Engineer services are sent in the
message using wsdl:Service. No service type information is described in the Department WSDL.

<soap:Envelope>
	<soap:Body>
	<hr:Department deptNo="123" xmlns:hr="http://hr.example.com" 
		wsdl:descriptionLocation="http://hr.example.com http://hr.example.com/department.wsdl">
		<hr:Manager interface="hr:Manager">
			<wsdl:endpoint binding="hr:ManagerSOAP">
				<soap:address location="http://hr.example.com/employee/smith/judy">
			</wsdl:endpoint>
		</hr:Manager>
		<hr:Engineer interface="hr:Engineer">
			<wsdl:enpoint binding="hr:EngineerSOAP">
				<soap:address location="http://hr.example.com/employee/jones/tom"/>
			</wsdl:endpoint>
		</hr:Engineer>
		<hr:Engineer interface="hr:Engineer">
			<wsdl:enpoint binding="hr:EngineerSOAP">
				<soap:address location="http://hr.example.com/employee/lee/jin"/>
			</wsdl:endpoint>
		</hr:Engineer>
	</hr:Department>
	</soap:Body>
</soap:Envelope>

<wsdl:definitions targetnamespace="http://hr.example.com"
	xmlns:hr="http://hr.example.com">

	<wsdl:types>
		<xs:schema targetnamespace="http://hr.example.com">

			<xs:element name="DepartmentNumber" type="xs:string"/>

			<xs:element name="Department">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Manager" type="wsdl:Service"/>
						<xs:element name="Engineer" type="wsdl:Service"
							minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="deptno" type="xs:string"/>
					<xs:attribute ref="wsdl:descriptionLocation"/>
				</xs:complexType>
			</xs:element>

		</xs:schema>
	</wsdl:types>

	<wsdl:interface name="Manager">...</wsdl:interface>

	<wsdl:interface name="Engineer">...</wsdl:interface>

	<wsdl:interface name="Department">
		<wsdl:operation name="getDepartment">
			<wsdl:input body="hr:DepartmentNumber"/>
			<wsdl:output body="hr:Department">
			</wsdl:output>
		</wsdl:operation>
	</wsdl:interface>

	<wsdl:binding name="ManagerSOAP" interface="hr:Manager"/>

	<wsdl:binding name="EngineerSOAP" interface="hr:Engineer"/>

	<wsdl:binding name="DepartmentSOAP" interface="hr:Department">
		<soap:binding ... />
		<wsdl:operation name="getDepartment">
			<wsdl:input>...</wsdl:input>
			<wsdl:output>...</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>

	<wsdl:service name="DepartmentService" interface="hr:Department">
		<wsdl:endpoint name="DepartmentServiceSOAP" binding="hr:DepartmentSOAP">
			<soap:address location="http://hr.example.com/department"/>
		</wsdl:endpoint>
	</wsdl:service>	

</wsdl:definitions>--=_mixed 007271B285256DAA_Content-Type: text/plain; name="example1a-1.txt"
Content-Disposition: attachment; filename="example1a-1.txt"
Content-Transfer-Encoding: quoted-printable
Jeff Mischkinsky                      jeff.mischkinsky@oracle.com
Consulting Member Technical Staff     +1(650)506-1975
Director, Web Services Standards      500 Oracle Parkway M/S 4OP9
Oracle Corporation                    Redwood Shores, CA 94065

Received on Tuesday, 23 September 2003 20:40:34 UTC