![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
Mam taki kod:
No i wszystko jest ok, dopóki nie chce spróbować złapać wyjątku. Zmieniam kolejność elementów w dokumencie XML i wyświetla mi takie coś: Kod Warning: DOMDocument::load() [function.load]: Element article content does not follow the DTD, expecting (title , date , author+ , content), got (date title author content ) in /home/matid/www/Current/XML/article.xml, line: 15 in /home/matid/www/Current/XML/XML.test.php on line 8 Logicznym się wydaje, że powinno wyrzucić wyjątek, niestety tak nie jest. Ustawienie zmiennej strictErrorChecking na true (BTW domyślnie też jest true) powinno zmusić DOM do wyrzucania DOMException. Wie ktoś dlaczego? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
Cytat(dasko @ 2005-05-04 19:06:38) Czemu oczekujesz od validatora DTD, że wyrzuci wyjątek? Błąd DTD to nie błąd parsera, ani też błąd podczas ładowania - a takie właśnie wywalają DOMException. A Warning jest generowany chyba tylko dlatego, żeby w jakiś sposób było wiadomo, że validacja się nie powiodła(jeśli weryfikujesz na starcie nie masz możliwości zobaczenia co zwróciła weryfikacja). Zauważ, że po tych warningach dokument XML w przeglądarce nadal jest wyświetlany. No dobra, ale trochę nielogiczne wydaje mi się wywalanie błędu DTD przez funkcję DOMDocument::validate(); W manualu pisze, że jeśli walidacja się nie powiedzie, zwraca false, a jeśli się powiedzie, zwraca true. Tylko po co jeszcze ten warning... Poradziłem sobie po prostu wyciszając tę funkcję, ale IMO jest to trochę pokrętne rozwiązanie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 23:53 |