I know that with web server, the html pages are transfered from server to client, with web services, a xml file is sent, but still ... I don't understand them; not even the difference between them.
Can someone explain as simple as possible this terms ?
Platform: java,python,php
Thank you
There is no really precise definition of these terms, but very roughly speaking:
So the difference is the "audience": a web server serves pages for people to read in a browser; a web service provides data to some program (which may itself be a web server ;-)).
To make the confusion complete, most web servers (the program) can be used to implement a web service (as the technical basis is the same). So it's not really a technical distinction, but one of which purpose the server has.
A web server is something that serves you contents using the HTTP(S) protocol; it receives requests in the form "give me http://some.site.com/some/page?some=parameter" and sends back an answer that can be an HTML page or anything else that can be transferred over HTTP(S); that is, pretty much anything (see MIME for details).
More often than not, web pages will not be only static text files, but will be generated on-the-fly by the server using some server-side code developed by programmers; when a web site (or part of it) gets complex enough, it's common to define it as a "web application"; the term is very vague, and actually means "a web site with a dynamic-generated content". Sometimes, the web server and the application server are actually the same program (see IIS, or Apache with modules); other times, the application server is a full-blown different program (maybe even running on a different machine), which communicates with the web server to feed it dynamic contents while the web server manages HTTP requests and static contents; this is the standard practice for Java web sites.
A web service is a web application which follows some standards defined for exchanging requests and responses using XML; the idea here is that the web service is not going to be used by humans, but will be called by other programs (possibly being web applications themselves) and so it doesn't need to do fancy graphics or anything else, but just to provide the requested informations in a standardized way.
A simple way is to run through a couple of scenarios:
A web-server has the files you want to give to the client. (client can be a browser, an application or another web-server, or another server)
A web-service is the mechanism through which the web-server understands a request from a client and in turn reacts to it. The reaction could be serving up the results of a query, doing an internal command and other similar items.
Generally, when you hear "webservices" in web 2.0 speak, like an API, you're talking about a programming language that is listening on the web-server waiting for commands or queries.
Take for example Twitter. Twitter itself is served by a web-server, but when a client clicks on "followers" the browser sends a web-services command to the webserver asking who the followers are.
A web-server serves files by definition, but it must run some type of web-service in order for it interact with clients. Also, in sysadmin circles, a webservice can be any service that can be exposed as it relates to the webserver. For example if you have a website with 4 customer facing applications (mysql, tomcat, apache, netbeans) you could loosely refer to those as "webservices" even though they technically are webservers and database services, but this isn't what you were looking for I don't think. Stick to webservices as to it relates to APIs.
Also this should expand well - http://en.wikipedia.org/wiki/Web_server and http://en.wikipedia.org/wiki/Web_service
HTH