XML/DTD 显示一些错误

XML/DTD showing some errors

拜托,我需要一些帮助,因为我正在尝试验证我的 XML 但 DTD 显示了 3 个我找不到的错误。

XML:

<item>
        <image>images/ejournal.jpg</image>
        <title>Internet TESL Journal</title>
        <type>eJournal/eMagazine</type>
        <editform>https://ecu.on.worldcat.org/oclc/44511716#editions-panel44511716-section</editform>
        <author>
            <fname>Internet TESL Journal (Firm)</fname>
            <sname></sname>
            <alink>https://ecu.on.worldcat.org/search?queryString=au:Internet%20TESL%20Journal%20(Firm)&amp;databaseList=638</alink>
        </author>
        <year>1995</year>
        <link>https://ecu.on.worldcat.org/oclc/44511716</link>
        <vlink></vlink>
        <description>
            <summary>Each issue contains articles, research papers, lessons plans, classroom handouts, teaching ideas &amp; links. Also includes articles, lessons and handouts from previous issues from 1995 on. </summary>
            <publication>Toyota, Japan : Internet TESL Journal, 1995.</publication>
            <language>English</language>
            <database>WorldCat </database>
            <oclc>44511716 </oclc>
            <genre>Electronic journals, Periodicals. </genre>
            <issn></issn>
            <isbn></isbn>
        </description>
    </item>

和 DTD:

<!ELEMENT library (item+)>
<!ELEMENT item (image,title,type,editform,author+,year,link,vlink,description)>
<!ATTLIST item CDATA #REQUIRED>
<!ELEMENT image (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT type (#PCDATA)>
<!ELEMENT author (fname,sname,alink)>
<!ATTLIST author CDATA #REQUIRED>
<!ELEMENT fname (#PCDATA)>
<!ELEMENT sname (#PCDATA)>
<!ELEMENT alink (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT link (#PCDATA)>
<!ELEMENT vlink (#PCDATA)>
<!ELEMENT description (summary,publication,language,database,oclc,issn,isbn)>
<!ATTLIST description CDATA #REQUIRED>
<!ELEMENT summary (#PCDATA)>
<!ELEMENT publication (#PCDATA)>
<!ELEMENT language (#PCDATA)>
<!ELEMENT database (#PCDATA)>
<!ELEMENT oclc (#PCDATA)>
<!ELEMENT issn (#PCDATA)>
<!ELEMENT isbn (#PCDATA)>

验证器给出以下错误:

Error Code: -1072896764 Error Reason: A name was started with an invalid character. Error Line: 3

三个 ATTLIST 条目不正确。

我的解析器报告:

元素 "item" 的属性 "CDATA" 声明中需要属性类型。

由于 none 个元素具有任何属性,因此您不需要 ATTLIST。

问题出在您的 ATTLIST 声明中。您只是忘记添加实际的 attribute-name!

整体形式为:

<!ATTLIST element-name attribute-name attribute-type attribute-value>

不匹配:

<!ATTLIST item   CDATA #REQUIRED>
               ^
               |
         attribute-name missing here

简单的解决方案:从您的 DTD 中删除 ATTLIST

顺便说一句:为什么不使用 XSD 进行验证?