Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> domxpath - pobieranie elementu z określonym atrybutem, nieoczekiwane współdziałanie z #documentfragment
neo.
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 25.08.2006

Ostrzeżenie: (0%)
-----


Poniższy kod działa tak, jak się spodziewałem, tj. wyrzuca pspan: (czyli p, a zaraz za nim span)
  1. <?php
  2. $dom=new domdocument();
  3.  
  4. $f=$dom->createdocumentfragment();
  5.  
  6. $f->appendxml('<p id="a">test</p><span>test</span>');
  7.  
  8. $xpath = new DOMXPath($dom);
  9. $result=$xpath->query('.//*', $f);
  10.  
  11. foreach($result as $tag){
  12. echo $tag->nodeName;
  13. }
  14. ?>


Jednakże, gdy próbuję dobrać się do elementów, których id="a" spotyka mnie zawód:
  1. <?php
  2. $dom=new domdocument();
  3.  
  4. $f=$dom->createdocumentfragment();
  5.  
  6. $f->appendxml('<p id="a">test</p><span id="a">test</span>');
  7.  
  8. $xpath = new DOMXPath($dom);
  9. $result=$xpath->query('.//*[@id="a"]', $f);
  10.  
  11. foreach($result as $tag){
  12. echo $tag->nodeName;
  13. }
  14. ?>

Skrypt, pomimo moich oczekiwań nie wyświetla napisu p.

Czy jest to jakiś bug php, czy po prostu gdzieś popełniam błąd?

O dziwo, gdy obiekt o id równym a nie jest bezpośrednio dzieckiem #document-fragment - kod działa poprawnie:
  1. <?php
  2. $dom=new domdocument();
  3.  
  4. $f=$dom->createdocumentfragment();
  5.  
  6. $f->appendxml('<a><p id="a">test</p></a><span id="a">test</span>');
  7.  
  8. $xpath = new DOMXPath($dom);
  9. $result=$xpath->query('.//*[@id="a"]', $f);
  10.  
  11. foreach($result as $tag){
  12. echo $tag->nodeName;
  13. }
  14. ?>

Czyli wyświetla p.

Mój problem teoretycznie rozwiązuje takowe zapytanie, jednak nie jestem usatysfakcjonowany takim rozwiązaniem:
  1. <?php
  2. $result=$xpath->query('*[@id="a"]|*//*[@id="a"]', $f);
  3. ?>


Chciałem przeprosić osoby korzystające równocześnie z forumweb, czyli mojego forum domowego. Niestety na nim nie otrzymałem żadnej odpowiedzi.

Ps. dlaczego przed wszystkie cudzysłowy zostały wstawione znaki \ ? Bynajmniej nie ja jestem ich autorem.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 02:27