Por que o atributo 'xmlns' afeta a pesquisa no XPath Node?

O código a seguir funciona perfeitamente. Veja o arquivo XML abaixo.

XPathDocument xPathDoc = new XPathDocument(@"C:\Authors.xml");
XPathNavigator navigator = xPathDoc.CreateNavigator();
XPathNodeIterator iterator = navigator.Select("/Contacts/Author/FirstName");
iterator.MoveNext();
string firstName = iterator.Current.InnerXml;
Console.WriteLine(firstName);

O valor de 'firstName' retorna 'Joe', o que é perfeito. No entanto, quando adiciono este atributo xmlns = "http://www.w3.org/1999/xhtml" à tag '', para que fique da seguinte maneira:

<Author xmlns="http://www.w3.org/1999/xhtml">

o código não retornará o valor correto ('Joe') Por que o atributo xmlns = "http://www.w3.org/1999/xhtml" afeta o código acima e o que está faltando para retornar o valor correto?

Qualquer ajuda será muito apreciada.

Aqui está o arquivo xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<Contacts>
<Author>
<FirstName>Joe</FirstName>
</Author>
<Teacher>
<FirstName>Larry</FirstName>
</Teacher>

<Painter>
<FirstName>Mary</FirstName>
</Painter>
</Contacts>

questionAnswers(2)

yourAnswerToTheQuestion