2013-02-12 60 views
0

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

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的结束标记?

回答

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属性。您可能希望它们隐含取决于您的数据。