0

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

4

1 回答 1

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

注意:我将titleandimageurl属性设为必需。您可能希望根据您的数据隐含它们。

于 2013-02-12T23:58:09.507 回答