Colin747
Colin747

Reputation: 5023

XML DTD error on closing tags - validation error

I'm using http://www.xmlvalidation.com/index.php to validate my DTD but it is producing errors on the XML closing tags.

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

List of errors:

    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)".

How do you deal with closing tags in DTD's?

Upvotes: 0

Views: 1807

Answers (1)

Daniel Haley
Daniel Haley

Reputation: 52888

This has nothing to do with closing tags. You needed to declare your attributes for book and you needed to fix your models for the book and description elements.

New 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)>

Note: I made the title and imageurl attributes required. You may want them implied depending on your data.

Upvotes: 2

Related Questions