Witam,

utworzyłem sobie prosty dokument XHTML, którego kod wygląda tak:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xyz="http://my-own.namespace.com/dir">
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>Test</title>
  6. </head>
  7. <div xyz:field="pole"></div>
  8. </body>
  9. </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:

  1. <?php
  2. $doc = DOMDocument();
  3. $doc->loadHTMLFile('plik.html');
  4. echo $doc->getElementsByTagName('div')->item(0)->getAttributeNS('http://my-own.namespace.com/dir', 'field');
  5. ?>


i... nic. Metoda getAttributeNS() nie chciała mi niczego zwrócić. Próbowałem różnych 'sztuczek' np.

  1. <?php
  2. getAttributeNS('xyz', 'field');
  3. ?>


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:

  1. <?php
  2. getAttribute('xyz:field');
  3. ?>


dostaję odpowiednią wartość. Jak należy zdefiniować namespace w dokumencie XHTML i jak wywołać metodę getAttributeNS(), by uzyskać pożądany efekt?