XML验证错误-Root元素必须与doctype匹配

时间:2011-12-06 15:23:14

标签: xml

我试图用外部DTD验证我的XML文件。但我每次都会收到这个错误。

Document root element "A", must match DOCTYPE root "test".

我无法弄清楚这一点。

我的xml文件的想法是它需要尽可能短。 我认为它很好,但就像我说的,我不会验证。有人有想法吗?

这是我的XML文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test SYSTEM "test.dtd">

<A>
<B>
<F>name</F>
</B>
<D>lastname</D>
<F>name</F>
</A>

我的DTD

<!ELEMENT A (B, (C|D), E?, (F, G?)+)>
<!ELEMENT B (F|G)+>
<!ELEMENT D (#PCDATA|C)*>
<!ELEMENT F (#PCDATA)>
<!ELEMENT G (#PCDATA)>
<!ELEMENT C (#PCDATA)>
<!ELEMENT E (#PCDATA)>

由于

2 个答案:

答案 0 :(得分:14)

Doctype声称根元素为<test>,但您使用了<A>

<!DOCTYPE test
          ^^^^

更改Doctype,使其声明root为<A>或更改XML和DTD以使用<test>

答案 1 :(得分:4)

<!DOCTYPE test SYSTEM "test.dtd">

声明符合DTD的文档的根ELEMENT称为test。你想要:

<!DOCTYPE A SYSTEM "test.dtd">