~/php-5.0.0RC1/ext/dom/examples/note.php
[php:1:a7a1be9481]<?php
$dom = new domDocument;
$dom->load('note.xml');
if (!$dom->validate('note.dtd')) {
print "Document note.dtd is not validn";
} else {
print "Document note.dtd is validn";
}
$dom = new domDocument;
$dom->load('note-invalid.xml');
if (!$dom->validate('note.dtd')) {
print "Document note-invalid.xml is not validn";
} else {
print "Document note-invalid.xml is validn";
}
?>[/php:1:a7a1be9481]
jednak na razie takie cos zwraca blad
Cytat
~/php-5.0.0RC1/ext/dom/examples# php -f note.php
php Warning: domdocument::validate() expects exactly 0 parameters, 1 given in /root/php-5.0.0RC1/ext/dom/examples/note.php on line 5
Warning: domdocument::validate() expects exactly 0 parameters, 1 given in /root/php-5.0.0RC1/ext/dom/examples/note.php on line 5
Document note.dtd is not valid
php Warning: domdocument::validate() expects exactly 0 parameters, 1 given in /root/php-5.0.0RC1/ext/dom/examples/note.php on line 13
Warning: domdocument::validate() expects exactly 0 parameters, 1 given in /root/php-5.0.0RC1/ext/dom/examples/note.php on line 13
Document note-invalid.xml is not valid
php Warning: domdocument::validate() expects exactly 0 parameters, 1 given in /root/php-5.0.0RC1/ext/dom/examples/note.php on line 5
Warning: domdocument::validate() expects exactly 0 parameters, 1 given in /root/php-5.0.0RC1/ext/dom/examples/note.php on line 5
Document note.dtd is not valid
php Warning: domdocument::validate() expects exactly 0 parameters, 1 given in /root/php-5.0.0RC1/ext/dom/examples/note.php on line 13
Warning: domdocument::validate() expects exactly 0 parameters, 1 given in /root/php-5.0.0RC1/ext/dom/examples/note.php on line 13
Document note-invalid.xml is not valid
Zatem aby przetstowac XML na DTD musze wlaczyc DOCTYPE do pliku xml. Trudno. Problem polega na tym, ze parser XML szuka pliku dtd wzgledem swojego miejsca uruchomienia a nie pliku xml.
Zatem majac plik xml:
[xml:1:a7a1be9481]
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE page SYSTEM "../templates/www/index.dtd">
<page mime="application/xhtml+xml">
</page>
[/xml:1:a7a1be9481]
musze plik dtd podawac z cala sciezka relatywna do pliku index.php, co nie jest zbyt wygodne, gdyz plik xml jest tez kierowany do innych celow. Czy istnieje jakis sposob, aby parser uzywal pliku dtd z katalogu w ktorym znajduje sie xml?