2015-04-26 132 views
2

我想解決兩個過去的考試問題,我設法完成它,但我不確定我是否做得對。如果有人能夠幫助我,我真的很樂意。我已經貼上了考題。 enter image description here編寫XML和DTD文檔

第一個問題要求我寫一份前三部分的XML文檔,這就是我得到的。是否正確,是否會有更簡單的方法,因爲我需要使用筆和紙來編寫XML文檔。


<Top_3_Books> 

<Book Catagory="Wine"> 
<Book1> 
<Title> French Wines: The Essential Guide <\Title> 
<Author> Penguin Publishers <\Author> 
<\Book1> 

<Book2> 
<Title> An Encyclopaedia of the Wines and Domains of France <\Title> 
<Author> Oxford Press <\Author> 
<\Book2> 

<Book3> 
<Title> Hachette Atlas of French Wines & Vineyards <\Title> 
<Author> Addison-Wesley <\Author> 
<\Book3> 

<\Book> 


<Book Catagory="Food"> 

<Book1> 
<Title> Seafood Recipes from Cornwall <\Title> 
<Author> R.Steinway and BBC Press <\Author> 
<\Book1> 

<Book2> 
<Title> D. Smithson's Easy How-To-Cook <\Title> 
<Author> D. Smithson and Prentice-Hall <\Author> 
<\Book2> 

<Book3> 
<Title> All Rhodes Lead to the Kitchen <\Title> 
<Author> J. Rhodes and Addison-Wesley <\Author> 
<\Book3> 

<\Book> 

<\Top_3_Books> 

對於部分C,我需要寫一個DTD和下面是我的嘗試。它是否以更簡單或更快的方式再次寫入。謝謝。

<!ELEMENT Top_3_Books(Wines,Food)*> 
<!ELEMENT Wines (Books, Author?)> 
<!ELEMENT Books (#PCDATA)> 
<!ELEMENT Author (#PCDATA)> 
<!ELEMENT Food (Books, Author)> 
<!ELEMENT Books (#PCDATA)> 
<!ELEMENT Author (#PCDATA)> 

感謝

回答

0

這似乎在Wine類別,例如,應改變有點

一個。該類別不是一本書。它應該是一個Category元素,帶有一個類型。 b。所有書籍都是Book項目。無需製作單獨物品Book1,Book2等 c。每本書的Publisher屬性。 d。作者名單,可選。看來這個類別沒有它們,所以我爲最後一本書發明了一個。

<Category type="Wine"> 
    <Books> 
     <Book Publisher="Penguin Publishers"> 
     <Title> French Wines: The Essential Guide <\Title> 
     <Authors><\Authors> 
     <\Book> 

     <Book Publisher="Oxford Press "> 
     <Title> An Encyclopaedia of the Wines and Domains of France <\Title> 
     <Authors><\Authors> 
     <\Book> 

     <Book Publisher="Addison-Wesley"> 
     <Title> Hachette Atlas of French Wines & Vineyards <\Title> 
     <Authors> 
      <Author>W. Esley</Author> 
     <\Authors> 
     <\Book>  
    <Books> 
<\Category> 

DTD應該有一個DOCTYPE定義根元素。

括號定義什麼來的元素,所以

<!DOCTYPE Top_3_Books 
[ 
    <!ELEMENT Top_3_Books(Category)> 
    <!ELEMENT Category(Books)> 
    <!ATTLIST Category 
     type CDATA   #REQUIRED 
    > 
    <!ELEMENT Books (Book)> 
    <!ELEMENT Book (Title, Authors)> 
    <!ATTLIST Book 
     Publisher CDATA  #REQUIRED 
    > 
    <!ELEMENT Title (#PCDATA)> 
    <!ELEMENT Authors (Author)*> 
    <!ELEMENT Author (#PCDATA)> 
]> 
+0

感謝您的回答,現在有道理。我是否正確地完成了DTD? – Mikey

+0

@Mikey,我也編輯過它。可能有一個以上的正確答案,我寫了對我來說似乎是正確的。 – JNF

+0

謝謝,這看起來很混亂,是否有任何有用的材料/書籍/教程,我可以閱讀/觀看。再次感謝。 – Mikey

0

這裏的,實際上是有效的,涵蓋了所有的要求的示例。 (以前的答案是沒有。)

<!DOCTYPE top3books [ 

<!--Requirement #1 - zero or more categories--> 
<!ELEMENT top3books (category*)> 

<!--Requirement #3 - each category has at least one book--> 
<!ELEMENT category (book+)> 
<!--Requirement #2 - category has a type--> 
<!ATTLIST category 
    type CDATA #REQUIRED> 

<!--Requirements #4 and #6 - each book has a title and an optional list of authors--> 
<!ELEMENT book (title, authors?)> 
<!--Requirement #5 - each book has a publisher attribute--> 
<!ATTLIST book 
    publisher CDATA #REQUIRED> 

<!ELEMENT title (#PCDATA)> 
<!ELEMENT authors (author+)> 
<!ELEMENT author (#PCDATA)> 
]> 
<top3books> 
    <category type="Wine"> 
     <book publisher="Penguin Publishers"> 
      <title>French Wines: The Essential Guide</title> 
     </book> 
     <book publisher="Oxford Press"> 
      <title>An Encyclopedia of the Wines and Domains of France</title> 
     </book> 
     <book publisher="Addison-Wesley"> 
      <title>Hachette Atlas of French Wines &amp; Vineyards</title> 
     </book> 
    </category> 
    <category type="Food"> 
     <book publisher="BBC Press"> 
      <title>Seafood Recipes from Cornwall</title> 
      <authors> 
       <author>R.Steinway</author> 
      </authors> 
     </book> 
     <book publisher="Prentice-Hall"> 
      <title>D. Smithson's Easy How-To-Cook</title> 
      <authors> 
       <author>D. Smithson</author> 
      </authors> 
     </book> 
     <book publisher="Addison-Wesley"> 
      <title>All Rhodes Lead to the Kitchen</title> 
      <authors> 
       <author>J. Rhodes</author> 
      </authors> 
     </book> 
    </category> 
</top3books> 

你們中的一個人失蹤最重要的事情是,你的XML是不是well-formed。 (具體地,結束標籤應使用/代替\&需要是&amp;。)

我也改變所有元素和屬性名爲小寫。這不是必需的,但請記住,無論您如何定義元素,都需要如何使用它(案例很重要)。

我也注意到你錯過了Top_3_Books和內容規範(Wines,Food)之間的空間。確保你有required space between the name and the content spec

還有一件事;我的示例在內部子集中有DTD(位於[]之間的doctype內)。這意味着DTD和XML實例將全部位於同一個文件中。如果要將DTD寫入單獨的文件中,則需要從XML實例中的doctype聲明中引用DTD。讓我知道你是否需要一個看起來像什麼的例子。