środa, 9 grudnia 2009

xmllint z opcją dtdvalid

Xmllint ma użyteczną opcję, która pozwala sprawdzić poprawność pliku .xml względem zewnętrznego pliku DTD, tj. plik nie musi zawierać deklaracji DOCTYPE. Wygląda jednak, że implementacja tegoż zawiera poważne błędy. O tyle sprawa jest dziwna, że w google na ten temat nic nie ma a błąd jest tak oczywisty, że powinno być. Przykładowe DTD (A.dtd):


<!ELEMENT a (#PCDATA) >
<!ATTLIST a b CDATA "Wartosc domyslna" >
<!ENTITY e "Tresc encji" >

Przykładowy plik (A.xml):


<?xml version="1.0" encoding='ISO-8859-2'?>
<!-- <!DOCTYPE a SYSTEM "A.dtd"> -->
<a>Przykład encji: &e;</a>

teraz uruchomienie xmllint z opcją dtdvalid:


$ xmllint --dtdvalid A.dtd A.xml
A.xml:3: parser error : Entity 'e' not defined

kończy się błędem...

Brak komentarzy:

Prześlij komentarz