In its simplest form, the definition of a web service is a communication between two applications; not between a person and an application, for example.
As standards organizations like W3C and OASIS developed technology based on XML, the definition has become more exclusively used to describe standards based on these technologies. An important premise to web services is that they are independent of the processes on which they run. A web service that provides the temperature in a given zip code does this independently of the method used to request the information, for example. Obviously, standards still have to be used but this abstraction preserves the focus of the service: what the service does, provides the temperature by zip code; not how it does it.
The abstraction also means that these services can be provided regardless of the programming language or the operating systems involved, which makes them perfect for business to business (B2B) transactions where the underlying IT architectures at each business may have little in common.