理解XML的DTD规范:元素与属性的声明

需积分: 50 6 下载量 122 浏览量 更新于2024-07-31 收藏 172KB PPT 举报
"使用DTD规范XML文档" 在XML(Extensible Markup Language)中,DTD(Document Type Definition)是一种用于定义XML文档结构的规范。通过DTD,我们可以确保XML文档遵循一定的规则和约束,从而保证数据的准确性和一致性。学习如何编写DTD对于理解和处理XML文档至关重要。 3.1 DTD基本概念 DTD的主要目的是定义XML文档的结构和元素的使用规则。它是一系列声明,用于定义元素、属性、实体以及它们之间的关系。DTD有两种形式:内部DTD,直接包含在XML文档的开头;外部DTD,保存为单独的文件并通过DOCTYPE声明引用。使用DTD的好处包括验证文档的有效性、保持文档格式的一致性、促进数据交换和共享,以及帮助开发人员理解文档的逻辑结构以编写处理程序。 3.1.2 DTD的基本结构 一个完整的DTD由多个声明组成,包括元素类型声明、属性列表声明、实体声明等。这些声明定义了XML文档中可能出现的元素、它们的允许子元素、属性、以及可能的值。例如,DTD声明开始以`<!DOCTYPE>`,并指定文档根元素;元素类型声明使用`<!ELEMENT>`来定义元素的结构;属性列表声明用`<!ATTLIST>`来设定元素的属性;实体声明通过`<!ENTITY>`来存储文本或非XML数据。 3.2 DTD对元素的声明 3.2.1 元素声明的语法 元素声明的语法形式为`<!ELEMENT element_name element_definition>`,其中`element_name`是元素的名称,`element_definition`定义元素的内容模型,可以是元素的类型,如空元素、文本、其他元素或者元素的组合。 例如,如果我们要声明一个名为`book`的元素,它包含`title`和`author`两个子元素,我们可以这样声明: ```xml <!ELEMENT book (title, author)> ``` 此外,还可以声明元素为空,例如: ```xml <!ELEMENT emptyElement EMPTY> ``` 或者元素包含纯文本: ```xml <!ELEMENT textElement #PCDATA> ``` 3.3 DTD对属性的声明 属性列表声明允许我们定义元素的属性及其类型和默认值。例如,声明`book`元素有一个`id`属性,类型为ID,且有默认值`1`: ```xml <!ATTLIST book id ID #IMPLIED '1'> ``` 3.4 DTD的引用 在XML文档中,可以通过DOCTYPE声明来引用外部DTD,如: ```xml <!DOCTYPE book SYSTEM "book.dtd"> ``` 这告诉XML解析器使用`book.dtd`来验证文档的有效性。 3.5 实体的声明与引用 实体声明允许我们定义可重用的文本块或非XML数据。例如,声明一个通用版权声明实体: ```xml <!ENTITY copyright "Copyright &year; My Company"> ``` 然后在文档中,可以用`&copyright;`来插入版权信息。 总结来说,DTD是XML文档结构的重要组成部分,它为XML文档提供了严谨的框架,确保了数据的正确性和一致性。通过学习和熟练掌握DTD的使用,我们可以创建和维护更加规范和可靠的XML文档,为数据的处理和交换提供坚实的基础。
2016-05-31 上传
[实验目的] 1、安装并学习如何使用XMLSPY集成开发环境完成XML相关的开发工作。 2、熟悉和掌握XML规范的基本内容,包括XML声明、注释、处理指令、元素、属性、CDATA段、预定义实体、命名空间的使用,以及如何进行XML文档良构和有效性验证;能够灵活地使用XML层次数据来表示各种信息。 3、掌握如何在DTD文档中声明元素及其内容模型、属性,以及实体的声明和使用;使用内部/外部DTD规则,对XML数据文档的有效性进行约束。 [实验内容和步骤] 1、安装XMLSPY集成开发环境,新建XML、DTD文档,在各种不同的编辑视图中尝试采用不同的方式完成XML文档的编辑和查看;并使用XMLSPY提供的便利,建立XML、DTD两者之间的关联,进行XML文档的良构以及有效性验证。 2、附件中提供了一个名为SpyBase的Excel文件,其中包含Alias、Mission和Spy三张数据表,请分别完成下列任务: ①.使用一个XML文档(SpyBase1.xml)来描述其中包含的所有信息,基本保持原有数据的形式(不要将三个表中的数据进行嵌套)。请使用XML文档的Grid视图完成该文档的编写(需使用Grid视图中提供的表操作工具条),并验证文档的良构性。结果示例如下图所示(该图仅供参考,要求对aID、mID、spyID必须使用XML属性,其他字段使用XML元素): ②.使用一个XML文档(SpyBase2.xml)来描述其中包含的所有信息,要求通过XML元素的正确嵌套消除数据之间的参照关系产生的冗余。请使用XML文档的Text或者Grid视图完成该文档的编写,并验证文档的良构性。 3、为第二步中得到的SpyBase1.xml、SpyBase2.xml分别编写相应的外部DTD文档,建立模式与数据之间的关联,并进行文档有效性验证。在编写的DTD文档中,要求在DTD文档中使用参数实体来替换所有的#PCDATA和CDATA。 [实验思考] 在本实验中发现,一个XML文档可以通过平面的形式、或者层次的形式来表示多个关系数据库中的二维表,那么哪种方式更合适,为什么? [提交时间及内容] 最后提交时间 2013年?月?日 提交内容 提交SpyBase1.xml、SpyBase2.xml。 提交SpyBase1.dtd、SpyBase2.dtd。