Thomas Mell: Problem mit PHP5 und xpath

Beitrag lesen

Hi,

in deinem zweiten Bespiel ist der Namespace mit dem Prefix "X" der Default-Namespace des Dokuments (da er im Root-Element definiert wurde).

Richtig, und?
Im ersten Beispiel gehört das Element "test" dem Namensraum ="http://foo" mit dem Prefix "x" an. Demnach sollte es mit /root/x:test anzusprechen sein.
Folgendes funktioniert auch wunderbar:

<?  
$xml = '<?xml version="1.0" encoding="utf-8"?>  
<root xmlns:x="http://foo">  
  <x:test/>  
</root>';  
  
$dom = new DOMDocument;  
$dom->loadXML($xml);  
$xpath = new DOMXPath($dom);  
echo $xpath->query("/root/x:test")->length;  
?>

So wie es aussieht verarbeitet PHP nur solche Namensräume, welche im root-Element definiert werden. So weit mir bekannt ist, darf man das aber in allen Elementen, zumindest habe ich in den W3C-Specs nichts Gegenteiliges gefunden, lasse mich aber gerne eines Besseren belehren.

Grüße
Thomas