2012-02-15 4 views
1

의 유효성을 검사 failling은 DTD입니다 :XML DTD 내가 ... 여기에 외부 DTD와 XML 파일을

<!ELEMENT slideshow (slide+)> 
<!ELEMENT slide (image,date,time,narrative*,character*)> 
<!ELEMENT image (#PCDATA)> 
<!ELEMENT date (#PCDATA)> 
<!ELEMENT time (#PCDATA)> 
<!ELEMENT narrative (#PCDATA)> 
<!ELEMENT character (name,dialogue*)> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT dialogue (#PCDATA)> 
<!ATTLIST dialogue name CDATA #IMPLIED> 

을 그리고 여기 내 XML 파일의 머리 :

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

XML 내가 드림위버에서 DTD의 유효성을 검사 할 때 그러나, 다음과 같은 오류 검증하기 위해 실패의 DTD에 대해 잘 확인합니다 :

line 1: Expected comment or CDATA[xml] 
line 3: An exception occurred! Type:EmptyStackException, Message:The element stack is empty[xml] 

왜 이런 일이 일어나는 지 모르겠다.

+0

나머지 XML이 없으면 – Rado

+0

@Rado의 나머지 부분은 1300 줄이 넘습니다. 이것은 XML을 구조화 한 방식으로 오류를 던지는 것이 아니라 DTD에서 요소를 선언 한 방식으로 오류를 던지고있다. –

답변

1

dtd가 정의 된 방식에는 아무런 문제가 없습니다.

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE slideshow SYSTEM "slideshow.dtd"> 
<slideshow> 
    <slide> 
    <image>dsds</image> 
    <date>dsads</date> 
    <time>dsads</time> 
    <narrative>fdfd</narrative> 
    <narrative>fdfd</narrative> 
    <character> 
     <name>dasdsa</name> 
     <dialogue name="dsds">dsads</dialogue> 
    </character> 
    </slide> 
</slideshow> 

[편집] 내가 드림위버와 기계의 보류 있고 난 내가 문제를 발견 생각이 케이트의 XML 검사기 성공적으로 검증. dtd가 정의되어 있지 않으면 dreamweaver는 알려진 스키마에 대해 대체하고 문서의 유효성을 검사합니다. 기본 폴백은 edit-> preferences-> validator에서 설정할 수 있으며 기본적으로 HTML 4.0을 확인하도록 설정되어 있습니다. dtd가 유효한 XML 또는 HTML 파일이 아니므로 유효성 검사기는 오류를 올바르게 표시합니다. 나는 dreamweaver가 dtd를 적절히 검증 할 수 있다고 생각하지 않습니다. 따라서 올바른 XML 문서이므로 dtd 대신 오류를 무시하거나 XML 스키마를 사용하는 것이 좋습니다. 귀하의 dtd가 유효합니다.

+0

실제'slideshow.dtd' 파일의 유효성을 검사하십시오. 내 XML 페이지에서 유효성을 검사 한 결과 (위의 것과 같고 구조적으로 동일 함) 문서 형식 선언의 실제 내용을 확인하려고 시도 할 때입니다. (저는 dreamweaver의 유효성 검사를 사용하고 있습니다) –

+0

@ GeeleReith 저는 드림위버가 없으므로 정말 도움이되지 않습니다. xmlns 선언을 포함시켜 도움이되는지 확인할 수 있습니다. DTD에서''바로 다음에''를 추가하고 다른 오류가 있는지 확인하십시오. 모든 요소에 xmlns를 추가해야 할 수도 있지만, 드림위버를 사용하지 않으므로 단서가 없습니다. 행운을 빕니다! – Rado

+0

입력 해 주셔서 감사합니다. –

0

이것은 약간의 설명을위한 것이므로 답변으로 추가하겠습니다.

@Rado에 대한 의견에서 "문서 형식 선언의 실제 내용을 확인하려고 할 때"라고 말하면 ... 의 유효성을 검사하려는 것입니다. doctype 선언 만? Like? :

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

그렇다면 작동하지 않습니다. 루트 요소가 있어야하며 "The element stack is empty"오류에 대해 설명합니다.

doctype 선언의 유효성 검사는 XML 파일의 유효성을 검사 할 때 발생합니다. DTD는 또한 그 시점에 검증되어야합니다.

DTD를 XML과 구분하여 유효성을 검사하려면 DTD 파일 자체의 유효성을 검사해야합니다. Dreamweaver도 없지만 DTD에서 oXygen의 유효성을 검사합니다.

+0

나는 문제가 XML이 아닌 dtd의 유효성을 검증한다고 생각한다. – Rado

+0

사실 dtd 파일 자체의 유효성을 검사하고 있습니다. 나는 이것이 드림위버의 장난스러운 검증 도구라고 생각한다. –