xmllint:如何使用本地DTD文件验证XML

xmllint:如何使用本地DTD文件验证XML,xml,file,local,dtd,xmllint,Xml,File,Local,Dtd,Xmllint,我有一个本地DTD文件test.DTD。内容是: <!DOCTYPE coord [ <!ELEMENT coord (date)> <!ELEMENT date (#PCDATA)> ]> 但当我尝试时: xmllint --loaddtd test.dtd --valid --noout my.xml xmllint --dtdvalid test.dtd --noout my.xml 两者都不起作用。结果是: test.dtd:1: parser

我有一个本地DTD文件test.DTD。内容是:

<!DOCTYPE coord [
<!ELEMENT coord (date)>
<!ELEMENT date (#PCDATA)>
]>
但当我尝试时:

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
test.dtd:1:解析器错误:外部子集中的内容错误

首先,外部DTD不需要
该命令的输出是什么?看起来DTD有问题。不是吗?不是,因为当我将DTD文本按原样插入XML时,它就工作了。也许我需要在DTD文本文件中添加一行介绍行?你能显示你的DTD和xml吗?好的,我已经修改了我的问题,将它们包括在内。谢谢。但没有人说“坐标”是根元素。@EricH。如果你仔细想想,你不需要知道哪个元素是根。重要的是,您,DTD的作者,知道哪个元素是根元素,并为它编写一个规则。xmllint从根开始解析XML文档,所以这条规则将是第一条被应用的规则。xmllint--noout--dtdvalid test.dtd test.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
<!ELEMENT coord (date)>
<!ELEMENT date (#PCDATA)>
$ xmllint --noout --dtdvalid test.dtd test.xml
<!ELEMENT coord (date,other)>
<!ELEMENT date (#PCDATA)>
$ xmllint --noout --dtdvalid test.dtd test.xml
test.xml:2: element coord: validity error : Element coord content does not follow the DTD, expecting (date , other), got (date )
Document test.xml does not validate against test.dtd