У меня есть локальный файл DTD test.dtd. Содержание:xmllint: как проверить XML, используя локальный файл DTD
<!DOCTYPE coord [
<!ELEMENT coord (date)>
<!ELEMENT date (#PCDATA)>
]>
Я хотел бы проверить XML с помощью xmllint. Этот XML не имеет DOCTYPE в нем:
<?xml version="1.0" encoding="x-mac-roman"?>
<coord>
<date>20150312</date>
</coord>
Нет проблем, если я вставить блок DTD как 2-й линии в копию моего файла XML и использование:
xmllint --valid --noout my2.xml
Но когда я пытаюсь:
xmllint --loaddtd test.dtd --valid --noout my.xml
xmllint --dtdvalid test.dtd --noout my.xml
обе не работают. Вывод:
test.dtd:1: parser error : Content error in the external subset
<!DOCTYPE coord [
^
test.dtd:1: parser error : Content error in the external subset
<!DOCTYPE coord [
^
Could not parse DTD test.dtd
Любая идея? Кажется, что мой XML MUST содержит строку DOCTYPE (с ключевым словом SYSTEM) для ссылки на внешний файл DOCTYPE, которого я хочу избежать. См.: http://www.w3schools.com/dtd/
Есть ли какое-либо решение без изменения XML?
Каков результат этой команды? – hek2mgl
Похоже, что что-то с DTD ошибочно. Не так ли? – hek2mgl
Нет, потому что, когда я вставляю этот текст DTD в XML как есть, он работает. Может быть, мне нужна строка ввода в текстовом файле DTD? –