utworzyłem sobie prosty dokument XHTML, którego kod wygląda tak:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xyz="http://my-own.namespace.com/dir"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> </body> </html>
do taga <html> dodałem swój namespace xyz, którego użyłem również w divie. Następnie w PHP napisałem poniższy kod:
<?php $doc = DOMDocument(); $doc->loadHTMLFile('plik.html'); echo $doc->getElementsByTagName('div')->item(0)->getAttributeNS('http://my-own.namespace.com/dir', 'field'); ?>
i... nic. Metoda getAttributeNS() nie chciała mi niczego zwrócić. Próbowałem różnych 'sztuczek' np.
<?php getAttributeNS('xyz', 'field'); ?>
ale to również nie działa. Co ciekawe, kiedy chce pobrać elementy ze standardowego namespace'a (xmlns), metoda także niczego mi nie zwraca, natomiast gdy zrobie:
<?php getAttribute('xyz:field'); ?>
dostaję odpowiednią wartość. Jak należy zdefiniować namespace w dokumencie XHTML i jak wywołać metodę getAttributeNS(), by uzyskać pożądany efekt?