Witam, chciałem napisać taki mały procesor xml, kóry xpatchem znajduje tagi
<t:include source="p.xml"/>
i zastępuje je nodem z p.xml
kod:
  1. <?
  2.  
  3. //załaduj content.xml
  4. $doc=new DOMDocument();
  5. $doc->load("content.xml");
  6.  
  7. $xp=new DOMXPath($doc);
  8. $xp->registerNamespace("t", "pl.adamborowski.spider.server");
  9. $query="//t:include";
  10. /* @var $entries DomNodeList */
  11. $entries=$xp->evaluate($query, $doc);
  12. for($i=0;$i<$entries->length;$i++)
  13. {
  14. $node=$entries->item($i);
  15. $source=$node->getAttribute("source");
  16. $xml=new DOMDocument();
  17. $xml->load($source);
  18. $docNode=$doc->importNode($xml);
  19. $node->parentNode->replaceChild($docNode, $node);
  20. }
  21. header('Content-Type: text/xml; charset=utf-8');
  22. echo $doc->saveXML();
  23. ?>


wsystko ok, ale w momencie $xml->load są błędy słuszne zresztą, że wczytany plik nie ma opisanych prefiksów przestrzeni nazw tam użytych.
Nie ma i nie będzie miał, bo to jest wycinek dużego xml, i CHCĘ przepiać definicje przestrzeni nazw do tego pliku poprzez złączenie obu plików.
Jak to klasycznie rozwiązać? Wiem, że można bawić się w replacement samego stringa, ale.. czy istnieją jakieś normalne metody?