<?php
$xml = <<<EOD
<book xmlns:chap="http://example.org/chapter-title">
    <title>My Book</title>
    <chapter id="1">
        <chap:title>Chapter 1</chap:title>
        <para>Donec velit. Nullam eget tellus vitae tortor gravida scelerisque.
            In orci lorem, cursus imperdiet, ultricies non, hendrerit et, orci.
            Nulla facilisi. Nullam velit nisl, laoreet id, condimentum ut,
            ultricies id, mauris.</para>
    </chapter>
    <chapter id="2">
        <chap:title>Chapter 2</chap:title>
        <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin
            gravida. Phasellus tincidunt massa vel urna. Proin adipiscing quam
            vitae odio. Sed dictum. Ut tincidunt lorem ac lorem. Duis eros
            tellus, pharetra id, faucibus eu, dapibus dictum, odio.</para>
    </chapter>
</book>
EOD;
$sxe = new SimpleXMLElement($xml);
$sxe->registerXPathNamespace('c', 'http://example.org/chapter-title');
$result = $sxe->xpath('//c:title');
foreach ($result as $title) {
    echo $title . "\n";
}
?>
     
    O exemplo acima produzirá:
     Perceba como como o documento XML mostrado no exemplo define o namespace com o
     prefixo de chap. Imagine que este documento (ou outro semelhante)
     deveria ter utilizado o prefixo de c no passado para o mesmo
     namespace. Uma vez que ele foi alterado, a consulta XPath não irá mais
     retornar os resultados apropriados e a consulta exigirá modificações. Utilizando
     registerXPathNamespace evita modificações futuras na consulta, mesmo
     que o provedor altere o prefixo dos namespaces.