From the W3Schools:
the xmlns attribute specifies the xml namespace for a document.
This basically helps to avoid namespace conflicts between different xml documents, if for instance a developer mixes xml documents from different xml applications.
An example of this (also from the W3 website):
XML data to define an html table:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
XML data to define information about a coffee table
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
There are two table elements here, which would produce a conflict. To fix this, you can add a namespace to signify which piece of information defines an html table and which comprises information about a coffee table:
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>