2011-12-06 2 views
8

과 일치해야합니다. 외부 DTD로 XML 파일의 유효성을 검사하려고합니다. 하지만 매번이 오류가 발생합니다.XML 유효성 검사 오류 - 루트 요소가 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> 주장하지만 당신은

<!DOCTYPE test 
      ^^^^ 
<A>을 사용했다

루트가 <A>이라고 주장하도록 Doctype을 변경하거나 <test>을 사용하도록 XML 및 DTD를 변경하십시오.

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

은 DTD를 준수하는 문서의 루트 요소가 test라고 함을 선언합니다. 원하는 항목 :

<!DOCTYPE A SYSTEM "test.dtd">