HyperTextMarkupLanguage - if you go to a zillion websites, all have the more or less similar definition - It is a language used for marking up documents. But what is marking up?
Get any clue?
Imagine you were writing up a document in Microsoft Word to be printed later. To emphasize the headers, you would select one of the Header options in menubar. To emphasize on particular words or definitions in the document, you would either make them bold or italicize them. To change the paragraphs, you might indent your new paragraphs by a few tab spaces and adjust the scale.
Obviously you have visual cues on the menubar to help you achieve all such functions. As you print the document, the headers, the paragraphs, the italicized words are rendered on the paper as you expected them to be.
Now comes the browser ... the browser cannot understand what's a header or what's a new paragraph in the document by itself. It cannot distinguish between an italicized word versus a bold word. It needs explicit information to be able to do so. Without that information, all the different parts of the document mean the same to the browser. Thus, we have to explicitly tell the browser what's what. And how do we do that? We "mark up" the document effectively telling the browser - here's a header, here's a new paragraph and so on...And this is what HTML does.
eXtensibleMarkupLanguage (XML) - Now this language also does markup.
But while HTML specifically marks up the different parts of the document with a view to rendering its structure exactly as needed, XML marks up a document semantically.
Now the semantics of one document can be totally different than that of the other - one document may talk about physics while the other may talk about history. But the formatting of both the documents will never change ! This is why we have a standard set of elements in the HTML language, but XML can never have a standard set of elements - hence the eXtensibility.
XML's primary purpose is to facilitate the sharing of structured data (data that is systematically marked up) across different information systems.
Computer Science is a very beautiful science that will always continue to awe a layman beyond her/his imaginable limits. Some of its manifestations have completely changed the way we shop, search, watch videos, look for directions, listen to songs and so much more..
However, ever wondered why the curriculum can be so boring ! Being a computer science student trying to make sense of all the material, I would always wonder where in the real world would such problems have an application.
A thought just came to my mind with regards to this issue - Since most of the technologies get invented with a view to addressing the real world's problems , wouldn't it be nice to have the computer science curriculum follow a case study pattern similar to the MBA curriculum?
Introducing case studies to address topics like Web Search (Using Google's Search example), maps (using Mapquest, Google Maps), Distributed Systems (using Amazon's or most of the financial companies' working example), file formats and efficient transfer of file formats including streaming (using Adobe Flash and Youtube's example) and so on...