2011-12-06 54 views
8

我试图用外部DTD验证我的XML文件。但我每次都会遇到这个错误。XML验证错误-Root元素必须匹配doctype

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)> 

感谢

回答

14

在DOCTYPE声明根元素是<test>,但你已经使用<A>

<!DOCTYPE test 
      ^^^^ 

请更改文档类型,以便声明根目录为<A>或将XML和DTD更改为使用<test>

4
<!DOCTYPE test SYSTEM "test.dtd"> 

声明该DTD符合的文件的根元素被称为test。你想要:

<!DOCTYPE A SYSTEM "test.dtd"> 
相关问题