Ожидается внешнее объявление разметки DTD [дубликат]

Nov 30 2020

У меня проблема с проверкой XML, когда я добавляю внешнюю проверку DTD. Это нормально работает:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE booklist [
<!ELEMENT booklist (book)*>
<!ELEMENT book (author,title,published?)>
<!ELEMENT author (firstname,lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT published (#PCDATA)>
<!ATTLIST book genre (Science|Fiction) #REQUIRED>
<!ATTLIST book format (Paperback|Hardcover) "Paperback">
]>
<booklist>
  <book genre="Fiction" format="Paperback">
    <author>
      <firstname>Name</firstname>
      <lastname>Surname</lastname>
    </author>
    <title>Sample</title>
    <published>2020</published>
  </book>
</booklist>

Когда я пытаюсь добавить внешнее объявление dtd, редактор копирования XML выводит ошибку

Неустранимая ошибка в строке 1, столбце 3: ожидается объявление разметки

XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE booklist SYSTEM "booklist.dtd">
<booklist>
  <book genre="Fiction" format="Paperback">
    <author>
      <firstname>Name</firstname>
      <lastname>Surname</lastname>
    </author>
    <title>Sample</title>
    <published>2020</published>
  </book>
</booklist>

DTD

<!DOCTYPE booklist [
<!ELEMENT booklist (book)*>
<!ELEMENT book (author,title,published?)>
<!ELEMENT author (firstname,lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT published (#PCDATA)>
<!ATTLIST book genre (Science|Fiction) #REQUIRED>
<!ATTLIST book format (Paperback|Hardcover) "Paperback">
]>

Что я делаю неправильно ?

Ответы

1 kjhughes Dec 01 2020 at 00:17

Удалите DOCTYPEоболочку для вашего внешнего подмножества:

Внешний DTD

<!ELEMENT booklist (book)*>
<!ELEMENT book (author,title,published?)>
<!ELEMENT author (firstname,lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT published (#PCDATA)>
<!ATTLIST book genre (Science|Fiction) #REQUIRED>
<!ATTLIST book format (Paperback|Hardcover) "Paperback">