Jostain syystä en saa toimimaan edes tuolla sivulla olevaa esimerkkikoodin pätkää, jonka avulla tarkistetaan onko .xml tiedoto validi sille määritellyn dtd:n suhteen.
http://fi2.php.net/manual/fi/function.dom-domdocument-validate.php
validate()) {
echo "This document is valid!\n";
}
?>
oma.xml tiedostossani on linkki siihen liittyvään oma.dtd tiedostoon.
Esim. XMLwriter-ohjelmalla sivun validointi onnistuu ja sivu on "well-formed and valid..", mutta tuo php-funktio palauttaa aina totuusvertailusta FALSE. Testausalustana on seuraava yhdistelmä: Apache/2.0.55 (Win32) PHP/5.1.2.
Onko tuossa nyt jokin perustavaa laatua oleva virhe esimerkkiin verrattuna? Ei tunnu toimivan sitten millään, ei myöskään Schema-määrittelyä käyttäen. Muut $dom-olioon liittyvät käsittelyt toimivat ihan ok.
Onko hyviä vinkkejä?
http://fi2.php.net/manual/fi/function.dom-domdocument-validate.php
validate()) {
echo "This document is valid!\n";
}
?>
oma.xml tiedostossani on linkki siihen liittyvään oma.dtd tiedostoon.
Esim. XMLwriter-ohjelmalla sivun validointi onnistuu ja sivu on "well-formed and valid..", mutta tuo php-funktio palauttaa aina totuusvertailusta FALSE. Testausalustana on seuraava yhdistelmä: Apache/2.0.55 (Win32) PHP/5.1.2.
Onko tuossa nyt jokin perustavaa laatua oleva virhe esimerkkiin verrattuna? Ei tunnu toimivan sitten millään, ei myöskään Schema-määrittelyä käyttäen. Muut $dom-olioon liittyvät käsittelyt toimivat ihan ok.
Onko hyviä vinkkejä?
Vastaukset 2
Vanhimmat
xml:n ja dtd:n?
Kokeile loadin jälkeen tehdä dokumentille jotain yms. Vois kuvitella että se palauttaa falsen siksi, että se ei löydä toista tai molempia.
Olioon ladattu oma.xml -dokumentti on käsiteltävissä. Esim. sisältöä voi hakea tagin perusteella ja file_exists() palauttaa TRUE.
Eli, ongelma voisi olla tuo dtd:n löytyminen. Linkki on kuitenkin oma.xml-filessä niin, että se löytyy esim. tuolla XMLwriterilla dokumentti vaditoidessa. Myöskään tuolle $dom-->validate():lle ei hyödytä antaa dtd-tiedostoa hipsuissa tyyliin $dom-->validate('oma.dtd'); eikä $dom-->validate('./ext/oma.dtd');