Сбой XML DTD для проверки - PullRequest
       6

Сбой XML DTD для проверки

1 голос
/ 15 февраля 2012

У меня есть XML-файл с внешним DTD ... вот DTD:

<!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 в Dreamweaver, он не может выполнить проверку со следующими ошибками:

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

Я не могу понять, почему это происходит, кто-нибудь знает?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Я не вижу проблем с определением dtd.Это успешно подтверждено с помощью Kate XML Validator:

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

[править] Я завладел машиной с Dreamweaver, и я считаю, что обнаружил проблему.Когда dtd не определено, dreamweaver пытается выполнить откат к известной схеме и проверить документ.Откат по умолчанию может быть установлен в edit-> settings-> validator, и по умолчанию он настроен на проверку по HTML 4.0.Поскольку dtd не являются действительными файлами XML или HTML, валидатор правильно отображает ошибки.Я не думаю, что Dreamweaver может правильно проверить dtd, поэтому я предлагаю вам либо игнорировать ошибки, либо использовать XML-схему вместо dtd, поскольку это правильный XML-документ.Ваш dtd действителен.

0 голосов
/ 15 февраля 2012

Это немного для комментария, поэтому я добавляю его в качестве ответа.

В комментарии к @Rado вы сказали: «это когда я пытаюсь проверить фактическое содержимоеобъявление типа документа "... означает ли это, что вы пытаетесь проверить только объявление doctype?Как это?:

<?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 .

...