欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

XML DTD 文档类型定义

程序员文章站 2022-05-30 12:29:33
...
【简述】
  DTD 规定了一个语法分析器以解释一个
  Validating XML 文档所需要知道的所有规则的细节

内部 DTD 声明

  <!DOCTYPE 根元素名[
	元素描述
  ]>

案例:

  <?xml version="1.0" encoding="GB2312">
  <!DOCTYPE myfile[
	  <!ELEMENT title (#PCDATA)> <!-- 中间不能少了空格 否则会报错 -->
	  <!ELEMENT title (#PCDATA)> <!-- 中间不能少了空格 否则会报错 -->
]>

外部 DTD 声明

<!DOCTYPE 根元素名 SYSTEM/PUBLIC "dtd 文件路径">
  !DOCTYPE : 要定义一个 DOCTYPE
  SYSTEM/PUBLIC: 两个选其一
	SYSTEM: 自己定义的
	PUBLIC: 权威机构定义的

元素声明

  <!ELEMENT element-name element-definition>
  !ELEMENT 表示开始元素设置 必须大写
  element-name 表示要设置的元素名称
  element-definition 定义元素的类型

元素类型

【ANY 类型】<!ELEMENT 元素名 ANY>
  该元素可以包含任何在 DTD 中定义的元素内容
  元素出现的次数和顺序将不受限制
【EMPTY 类型】<!ELEMENT 元素名 EMPTY>
  不能包含子元素和文本 但可以有属性
【#PCDATA 类型】<!ELEMENT 元素名 (#PCDATA)>
  可以包含任何字符数据但不能包含子元素
【父元素类型 与正则配合使用】<!ELEMENT element(A, B+, C*, D?)>
  表明 element 元素是父元素 并且它必须有正好一个 A
  至少一个 B 零个或多个 C 以及零个或一个 D
  <!ELEMENT element(A|B|C)>
  父元素 element 可能有 A或B或C
【混合元素类型】<!ELEMENT 元素名(#PCDATA|子元素名1|子元素名2|....|子元素n)*>
【属性声明】
  格式:<!ATTLIST 元素名
		  属性名 	属性类型	属性特点
		  .....
		>
【属性特点】
  #REQUIRED 格式:<!ATTLIST 元素名 属性名 #REQUIRED>
  必须赋值的属性 必须为这个属性赋予一个值
  
  #IMPLIED : 格式:<!ATTLIST 元素名 属性名 #IMPLIED>
  属性值可有可无 不用设定默认值
  
  #FIXED value 格式:<!ATTLIST 元素名 属性名 #FIXED "默认值">
  固定取值属性 需要提供一个默认值 不希望替代该属性值
  
  Default value 格式:<!ATTLIST 元素名 属性名 属性类型 "默认值">
  事先定义了默认值的属性 需要在 DTD 中提供一个默认值
  
  
【属性类型】
  CDATA	纯文本 由可显示字符组成的字符串
  格式:<!ATTLIST 元素名 属性名 CDATA 属性特点>
  实例:<!ATTLIST 木偶 姓名 CDATA #REQUIRED>
  案例:<!ATTLIST 木偶 姓名="匹诺曹 123 Pi Nuocao"/>
  
  Enumerated 收取来自一组可接收的取值范围 在 () 内被指定
  
  ID 为某个元素定义唯一标识
  
  IDREF 引用已定义的 ID 值
  
  IDREFS 应用已定义的 ID 值
  
  ENTITY 取值为一个已定义的实体(特殊字符)
  
  ENTITIES 包含了多个外部 entity 不同的 entity 之间用空格隔开
  
  NMTOKEN 属性值只能由【字母 数字 下划线 . : -】组成
  
  NMTOKENS 属性值能够由多个 nmtoken 组成 每个 nmtoken 之间用空格隔开
  
  NOTATION 取值为一个 DTD 中声明的符号

来自《XML编程与应用教程(第2版)》自行整理的笔记

相关标签: XML xml