结束标记上的XML DTD错误 - 验证错误

时间:2013-02-12 23:24:59

标签: xml dtd xml-dtd

我正在使用http://www.xmlvalidation.com/index.php验证我的DTD,但它在XML结束标记上产生错误。

XML:

1   <?xml version="1.0" encoding="utf-8" ?>
2   <!DOCTYPE books SYSTEM "books.dtd">
3   <books>
4     <book title="Le Mans 24 Hours: The Official History of the World's Greatest Motor Race 1960-69" imageurl="images/1960-89.jpg">
5       <description>
6         <author>Quentin Spurring.</author>
7         <publisher>J H Haynes and Co Ltd.</publisher>
8         <publishDate>15 August 2010</publishDate>
9         <ISBN10>1844255840</ISBN10>
10        <ISBN13>9781844255849</ISBN13>
11        <blurb>Covers different races since 1923. This title also includes photographs, a race account, results data and a glorious rendering of the official race poster.</blurb>
12      </description>
13    </book>
14    <book title="Le Mans 24 Hours: The Official History of the World's Greatest Motor Race 1970-79" imageurl="images/1970-79.jpg">
15      <description>
16        <author>Quentin Spurring.</author>
17        <publisher>J H Haynes and Co Ltd.</publisher>
18        <publishDate>15 March 2011</publishDate>
19        <ISBN10>1844255395</ISBN10>
20        <ISBN13>9781844255399</ISBN13>
21        <blurb>Officially licensed with the ACO, the organisers of the annual Le Mans 24 Hours sports car race, this book covers various races since 1923.</blurb>
22      </description>
23    </book>
24  </books>

DTD:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT books (book+)>
<!ELEMENT book (title, imageurl, description, author, publisher, publishDate, ISBN10, ISBN13, blurb)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ELEMENT publishDate (#PCDATA)>
<!ELEMENT ISBN10 (#PCDATA)>
<!ELEMENT ISBN13 (#PCDATA)>
<!ELEMENT blurb (#PCDATA)>

错误列表:

    4:  129 Attribute "imageurl" must be declared for element type "book".
    4:  129 Attribute "title" must be declared for element type "book".
    12: 19  The content of element type "description" must match "null".
    13: 10  The content of element type "book" must match "(title,imageurl,description,author,publisher,publishDate,ISBN10,ISBN13,blurb)".
    14: 129 Attribute "imageurl" must be declared for element type "book".
    14: 129 Attribute "title" must be declared for element type "book".
    22: 19  The content of element type "description" must match "null".
    23: 10  The content of element type "book" must match "(title,imageurl,description,author,publisher,publishDate,ISBN10,ISBN13,blurb)".

你如何处理DTD中的结束标签?

1 个答案:

答案 0 :(得分:2)

这与关闭标签无关。您需要声明book的属性,并且需要修复bookdescription元素的模型。

新DTD

<!ELEMENT books (book+)>
<!ELEMENT book (description)>
<!ATTLIST book
          title CDATA #REQUIRED
          imageurl CDATA #REQUIRED>
<!ELEMENT description (author, publisher, publishDate, ISBN10, ISBN13, blurb)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ELEMENT publishDate (#PCDATA)>
<!ELEMENT ISBN10 (#PCDATA)>
<!ELEMENT ISBN13 (#PCDATA)>
<!ELEMENT blurb (#PCDATA)>

注意:我提供了所需的titleimageurl属性。根据您的数据,您可能希望隐含它们。