XML stands for Extensible Markup Language. It provides a set of rules for structuring and encoding documents in machine readable form.
XML speaks to the syntax of your documents and the relationship between objects in your documents, but little to the semantics or meaning of documents or objects in documents.
The semantics - or as you put it, how they are interpreted - is captured in the code that processes the documents.
Must programming environments provide one or more ways to process - parse - XML content. But as noted above the interpretation is left in the hands of the application once it has been parsed.
For example, the Ruby Programming Language has multiple XML parsers available to it. Two of them are REXML and XmlSimple.
Remember, an XML parser helps you with the syntax of the document, but meaning comes from your code and how you interpret the content and structure of the document.
For example, the following document could represent a lot of things, but my code would interpret it as being a configuration file that specifies the a set of servers, their os, os version, and IP addresses.
<config logdir="/var/log/foo/" debugfile="/tmp/foo.debug">
<server name="sahara" osname="solaris" osversion="2.6">
<address>10.0.0.101</address>
<address>10.0.1.101</address>
</server>
<server name="gobi" osname="irix" osversion="6.5">
<address>10.0.0.102</address>
</server>
<server name="kalahari" osname="linux" osversion="2.0.34">
<address>10.0.0.103</address>
<address>10.0.1.103</address>
</server>
</config>