외부 DTD 마크 업 선언이 필요함 [중복]

Nov 30 2020

외부 DTD 유효성 검사를 추가 할 때 XML 유효성 검사에 문제가 있습니다. 이것은 정상적으로 작동합니다.

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