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