Web Services Description Language
So the hip thing in enterprise software development right now, be it J2EE, .NET, or miscellaneous is web services, and we can go on and on about what they actually are, and what purpose they actually have, but that is a discussion for another node. I hope no one will think me too off-base if I say that basically web services are an attempt to expose certain "interesting" computer operations to the world in a platform-independent way. The idea being that once you can do that, all sorts of neat things should be possible. An example of a web service operation might be amazon.com exposing an operation that lets you get info on a book in their database by supplying an ISBN.
Fine. Super. Everyone likes neat things. But that platform-independent part is tricky -- we don't just mean operating system independence here, we mean it shouldn't even matter what programming language you use. That's crazy talk, it's like the government coming out with instructions on filing income tax that you can understand no matter what language you speak. Note that this is not the same as coming out with hundreds of different versions, one for each language -- that is easy, but inefficient. No, this web services esperanto -- a new language made only for describing these web services -- that is efficient, but harder.
The mechanics of WSDL are painful in their detail, but here is a general overview. First things first, WSDL is an XML-based language. It has angle brackets and lower case and the whole bit. The basic thing in WSDL is a port type. If you do object oriented programming, you can think of a port type as an interface, if you don't, you can think of a port type as your car stereo panel. It basically says "here are the things you can do" -- and when you do them, stuff happens. When you push buttons, maybe the station changes, maybe you set a pre-set, maybe it just shows you the time. Some buttons don't seem to do anything at all, but you can rest assured you've gone and screwed something up. So a port type says "here are the things you can do." It does this by containing a list of operations which may take input and/or produce output in the form of messages, but since we are keeping it general we'll skip those for now. If you understand so far, you can basically keep up with a conversation about web services, but there's oodles more detail if you want it.
Oh okay, a little more: Port types are fine, but they don't tell anyone how to actually DO anything. I can write up a WSDL file with an operation called makeMeKingOfTheFalklands(), but when I put it on my application server and attempt to invoke it, it will probably fail. A binding in WSDL says "here's a port type, and here's how to DO it in, say, java". A particularly important binding is a SOAP binding which says "this is how to do it with SOAP" -- this tells your user's programs the protocol for requesting services and getting something meaningful back. Finally, a Service (through one or more ports) tells your application server where to put everything so that people can find it.
So there's WSDL in a nutshell: Port Types (with Operations using Messages), Bindings, and Services. If the w3 people see this, they will almost certainly have a bird, since it is glossed, and simplified and probably illegal in the continental united states, but if you get this far, you are probably not too far off of understanding what WSDL is sort of intended to accomplish.