XML学习笔记(二)-- DTD格式规范

标签(空格分隔): 学习笔记


XML的一个主要目的是允许应用程序之间自由交换结构化的数据,因此要求XML文档具有一致的结构、业务逻辑和规则。可以定义一种模式来定义XML文档的结构,并借此验证XML文档的有效性。
定义XML文档结构有两种解决方案:一种是采用文档类型定义DTD;另一种是采用XML Schema

DTD的基本结构

DTD是用来规范XML文件的格式,必须出现在头文件中,一遍XML校验器在一开始便可以得到XML文件的格式定义。DTD是一套关于标记符的语法规则,它定义了可用在文档中的元素、属性和实体,以及这些内容之间的关系。

DTD的基本结构

DTD语法格式如下:

<!DOCTYPE 根元素名称[
<!ELEMENT 子元素名称(#PCDATA)>
]>

参数说明:

  • <!DOCTYPE:文档类型声明的起始定界符;
  • 根元素名称[:一个XML文档只有一个根元素,如果XML文档使用DTD,那么根元素的名称就在这里指定;
  • <!ELEMENT子元素名称(#PCDATA)>:用来定义出现在文档中的元素;
  • ]>:文档类型声明的结束界定符。

DTD中的定义元素

包括元素名称、构成元素基本类型和元素内容类型。

声明元素类型

语法如下:

<!ELEMENT 元素名 元素内容>
  • ELEMENT:是关键字,表示对元素类型进行声明;
  • 元素名:为当前元素指定元素名称;
  • 元素内容:元素后面的内容用来指定元素的内容类型,分为 EMPTY, 子元素类型, 混合型, ANY, PCDATA5中类型。

DTD中的元素限定符

元素限定符用于在DTD中规定子元素出现的顺序和次数。
常用的元素限定符有:

  • () - 用来给元素分组;
  • | - 在列出的元素中选择一个;
  • + - 可出的元素至少出现1次(1或多次);
  • * - 列出的元素允许出现0次到任意多次(0或多次);
  • ? - 列出的元素出现0次或1次,;
  • , - 列出的元素必须按照指定的顺序出现。

DTD中的定义属性

元素属性包括属性名称、变量类型、预定义属性等。

属性的声明

<!ATTLIST Element_name
Attribute_name TYPE [added_declare]
Attribute_name TYPE [added_declare]
....
>

属性的类型

在DTD中声明属性的语法格式时属性类型是属性声明中所必须的,常用的属性类型有:

  • CDATA: 字符数据;
  • ID: 该属性值在XML文档中是唯一的;
  • IDREF: 该属性值参考了XML文档中的另一个属性;
  • ENTITY: 表示该属性的设定值是一个外部实体,如一个图片文件;
  • NMTOKEN: 属性值只能由数字、字母、下划线、连字符等符号构成;
  • NOTATION: 属性值是在DTD中声明过的注解名称;
  • Enumerat: 列出能够赋予该属性的各种值的列表,只能从中选择属性值。

在DTD中声明XML的元素必须是字符串类型时,应该使用#PCDATA(在ELEMENT标签中使用);声明属性的属性值必须是字符串时,应该使用CDATA(在ATTLIST标签中使用)。

DTD中的试题

XML中预定义的常规实体引用"&lt;" "&gt;" "&amp;" "&apos;" "quot;" 分别对应着 "<" ">" "&" "'" """.

普通内部实体

<!ELEMENT Entity_Name Entity_Value>

普通外部实体

<!ELEMENT Entity_Name SYSTEM Entity_URL>
posted @ 2016-09-16 21:46  江湖小妞  阅读(3140)  评论(0编辑  收藏  举报