DTD的基本概念

DTD的基本概念

DTD概述

DTD基本概念

DTD是 Document Type Definition 文档类型定义的缩写。

XML是用来描述标记语言的语言,可以由DTD定义结构,包括标记,属性和实体以及这些内容的相互关系

DTD基本结构

分为外部DTD和内部DTD

  • 内部DTD


<!ELEMENT TITLE (#PCDATA)>
] !>
<DOCUMENT>
	<TITLE>空元素TITLE>
DOCUMENT>

以上是内部DTD,在XML文件的顶部声明。

  • 外部DTD



<DOCUMENT>
	<TITLE>空元素TITLE>
DOCUMENT>
  • 混合使用

<!DOCTYPE DOCUMENT SYSTEM "url"
[
	

属性类型

  1. CDATA

意味着属性必须是字符集合

  1. Enumerated

从一组给定的值中选择一个作为属性值

<!ATTLIST play position (center|forward|defenseman) "center" >
  1. ID类型
<!ATTLIST film class ID #REQUIRED>

表示每一个属性值在XML文档中必须是唯一的,ID属性的取值不可以用数字开头

  1. IDREF类型

必须引用XML文档或者其他元素ID类型属性的值



<!ELEMENT PERSON (#PCDATA)>
<!ATTLIST PERSON PNUMBER ID #REQUIRED>
<!ATTLIST PERSON FATHER IDREF #IMPLIED>
<!ATTLIST PERSON MOTHER IDREF #IMPLIED>
]>
<DOCUMENT>
	<PERSON  PNUMBER="a1">SusanPERSON>
	<PERSON  PNUMBER="a2">JackPERSON>
	ChelseaPERSON>
	DavidPERSON>
DOCUMENT>
  1. IDREFS 类型
<!ATTLIST author authorID ID #REQUIRED>
<!ATTLIST author IDREFS #REQUIRED>
<author authorID="a001" />
<author authorID="a002" />
<book author="a001 a002">book>
  1. ENTITY 类型

将外部二进制数据文件或者不可解析实体连接到XML中

<!ENTITY qhPress SYSTEM "xxx">
<!ATTLIST press publisher ENTITY #REQUIRED>

<press publisher="&qhPress;" />
  1. ENTITYS 类型

将多个连接到XML文档中

<!ENTITY qhPress SYSTEM "xxx">
<!ENTITY fzuPress SYSTEM "xxx">
<!ATTLIST press publisher ENTITYS #REQUIRED>
<press publisher="&qhPress;&fzuPress" />
  1. NMTOKEN 类型

属性值是一个有效的XML名称记号

<!ELEMENT paragraph  (#PCDATA)>
<!ALLIST paragraph size NMTOKEN #REQUIRED>
<paragraph size=“one_line”>paragraph>
<paragraph size=“two_lines >paragraph>
  1. NMTOKENS 类型
<!ELEMENT paragraph  (#PCDATA)>
<!ALLIST paragraph size NMTOKENS #REQUIRED>
<paragraph size=“one_line two_line”>paragraph>
  1. NOTATION 类型

    没看懂





<!ELEMENT img EMPTY>
<!ATTLIST img src   ENTITY    #REQUIRED>
<!ENTITY SOURCE SYSTEM “a.gif” NDATA gif>

<img src=“SOURCE” />

条件语句

有时候有些没用的DTD除了用注释还可以用IGNORE指令封装

<!ENTITY % ignore "IGNORE">
<!ENTITY % include "INCLUDE">
<!ELEMENT 图书馆A (科技类,文艺类,社科类)>  
]]>
<!ELEMENT 图书馆B (科技类,社科类,少儿类)>  
]]>
<!ELEMENT 科技类 (#PCDATA) >
<!ELEMENT 文艺类 (#PCDATA) >
<!ELEMENT 社科类 (#PCDATA) >
<!ELEMENT 少儿类 (#PCDATA) >

练习

下表是磁盘信息表,请根据该表格,写出表示该表格的XML文档,
并定义该文档的DTD。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mfB0IMct-1609259070307)(C:\Users\MSI\AppData\Roaming\Typora\typora-user-images\image-20201227140134374.png)]


<!ELEMENT 品名 (#PCDATA)>
<!ELEMENT 规格 (#PCDATA)>
<!ELEMENT 型号 (#PCDATA)>
<!ELEMENT 容量 (#PCDATA)>
<!ELEMENT 尺寸 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
<!ELEMENT 库存 (#PCDATA)>

<!ATTLIST 价格 货币 CDATA #REQUIRED '元'>
<!ATTLIST 库存 单位 CDATA #REQUIRED '盒'>
]>

你可能感兴趣的:(xml,dtd)