【发布时间】:2015-05-18 08:08:34
【问题描述】:
我有一个本地 DTD 文件 test.dtd。内容是:
<!DOCTYPE coord [
<!ELEMENT coord (date)>
<!ELEMENT date (#PCDATA)>
]>
我想使用 xmllint 验证 XML。此 XML 中没有 DOCTYPE:
<?xml version="1.0" encoding="x-mac-roman"?>
<coord>
<date>20150312</date>
</coord>
如果我将 DTD 块作为第二行插入到我的 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的解决方案?
【问题讨论】:
-
该命令的输出是什么?
-
DTD 似乎有问题。不是吗?
-
否,因为当我将这个 DTD 文本按原样插入 XML 时,它可以工作。也许我需要在 DTD 文本文件中添加一个介绍行?
-
你能显示你的 dtd 和 xml 吗?
-
好的,我已经修改了我的问题以包含它们。
标签: xml file local dtd xmllint