Several times recently, such as after delivering a TDWI local chapter meeting talk, I explained XMLA in a simple way that seemed very appreciated.   I'd like to share this explanation with our blog readers. 

XMLA is "XML for Analysis".  This name is not every enlightening.  It's a way to transmit MDX query language from any brand of computer OS to another computer running any brand of OS.  In particular, it is not tied to the Microsoft Windows OLE DB for OLAP (ODBO) client-side standard for emitting MDX, which only runs on Windows.

What seemed to be particularly enlightening was saying that
XMLA is "MDX within SOAP within XML within an HTTP packet". 
This sounds complex, but most data communications takes place by putting a message in a low level envelope, which is then in turn put in a higher level envelope that knows where to go, etc.  For example, you often hear of TCP/IP.  This is really TCP cargo in an IP packet (envelope).

So let's go back to XMLA.  It's a packet with cargo nested in this way:

HTTP (XML (SOAP (MDX)))

Dissecting this from the inside out:

  • MDX is a Multi-Dimensional eXpression query language.
  • SOAP is Simple Object Access Protocol (a way of exchanging structured information including function requests over the web).
  • XML is eXtensible Markup Language, a standard for self-defining data (it can self-explain the purpose of its contents and specify the type of data fragments within the contents, in this case SOAP elements).
  • HTTP is, of course, the standard web page protocol.

To learn more about XMLA, please check out a good web site we maintain on the topic: http://xmlforanalysis.com