about sitemap home home
Databases Data Formats Database Search Genome Browser RNA Secondary Structure Alignments Primer Design WebServices
Technology Simple Client Asynchronity
Demo XML schema Exercise WSDL
Bielefeld University Center of Biotechnoloy Institute of Bioinformatics BiBiServ
   
XML as communication base
Communication from and to WebServices is performed in XML. Also the data transfer can (but need not to) be managed using XML.
Namespaces
It is sometimes useful to divide up XML elements into groups or so called namespaces. Sometimes you have an element that can have a different meaning in different contexts. A simple biology example could be a sequence element which describes a nucleotide sequence or protein sequence depending on context. Namespaces are used to avoid problems using the sequence element in both ways in one document.
 
XML grammar - XML Schemas
XML is often described by an XML Schema document. XML Schema Definition (short: XSD) is a language recommended by W3C to describe structures of XML documents. Using such a grammar makes it easy to combine different WebServices. The output of one WebService can simply be pushed to another one, without performing any conversion.
 
WSDL
WSDL stands for Web Service Description Language. WSDL is a XML grammar for describing a WebService in a standardized way. The actual specification is available online at http://www.w3.org/TR/wsdl. A WSDL document describes important information about a WebService a client would basically need:
  1. the name of the service
  2. its location
  3. the available methods
  4. their supported input/output parameter for each method
   
The following skeleton shows the general structure with the interesting parts of a WSDL document without any content.
<definitions>
	<import>*
	<types>
		<schema></schema>*
	</types>
	<message>*
		<part></part>
	</message>
	<PortType>*
		<operation>*
			<input></input>
			<output></output>
			<fault></fault>
		</operation>
	</PortType>
	<binding>*
		<operation>*
			<input></input>
			<output></output>
		<operation>
	</binding>
	<service>*
		<port></port>
	<service>
</definitions>
* indicates possible mutable occurance