编写 XML 和 DTD 文档
Writing a XML and DTD document
我正在尝试解决过去的两道试题,我设法完成了,但我不确定我是否做对了。如果有人可以帮助我,我真的很感激。我把试题贴出来了。
第一个问题要求我为 TOP 3 书籍编写一个 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)>
谢谢
例如,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)>
]>
这是一个实际有效的示例,涵盖了所有要求。 (之前的回答都不是。)
<!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 & 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。 (特别是结束标签应该使用 /
而不是 \
并且 &
需要是 &
。)
我还将所有元素和属性名称更改为小写。这不是必需的,但请记住,无论您如何定义元素,它都需要如何使用(视情况而定)。
我也注意到您在 Top_3_Books
和内容规范 (Wines,Food)
之间缺少 space。确保你有 required space between the name and the content spec.
另外一件事;我的示例在内部子集中包含 DTD(在 [
和 ]
之间的文档类型内)。这意味着 DTD 和 XML 实例都在同一个文件中。如果要将 DTD 写入单独的文件,则需要在 XML 实例中的 doctype 声明中引用 DTD。让我知道您是否需要一个示例来说明它的外观。
我正在尝试解决过去的两道试题,我设法完成了,但我不确定我是否做对了。如果有人可以帮助我,我真的很感激。我把试题贴出来了。
第一个问题要求我为 TOP 3 书籍编写一个 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)>
谢谢
例如,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)>
]>
这是一个实际有效的示例,涵盖了所有要求。 (之前的回答都不是。)
<!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 & 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。 (特别是结束标签应该使用 /
而不是 \
并且 &
需要是 &
。)
我还将所有元素和属性名称更改为小写。这不是必需的,但请记住,无论您如何定义元素,它都需要如何使用(视情况而定)。
我也注意到您在 Top_3_Books
和内容规范 (Wines,Food)
之间缺少 space。确保你有 required space between the name and the content spec.
另外一件事;我的示例在内部子集中包含 DTD(在 [
和 ]
之间的文档类型内)。这意味着 DTD 和 XML 实例都在同一个文件中。如果要将 DTD 写入单独的文件,则需要在 XML 实例中的 doctype 声明中引用 DTD。让我知道您是否需要一个示例来说明它的外观。