DTD学习笔记

1.什么是DTD,为什么要用DTD?
文档类型定义--Document Type Definition
DTD用来描述XML文档的结构,一个DTD文档包含:
元素(ELEMENT)的定义规则;
元素之间的关系规则;
属性(ATTLIST)的定义规则;
可使用实体(ENTITY)或符号(NOTATION)规则

2.如何生成一个DTD文档
DTD文档的声明及引用
内部DTD文档
<!DOCTYPE 根元素 [定义内容]>
外部DTD文档
<!DOCTYPE 根元素 SYSTEM "DTD文件路径">
内外部DTD文档结合
<!DOCTYPE 根元素 SYSTEM "DTD文件路径" [定义内容]>

3.元素的定义
语法:
<!ELEMENT NAME CONTENT>
  关键字  元素名称  元素类型
元素类型有以下几种:
EMPTY:该元素不能包含子元素和文本,但可以有属性(空元素)
ANY:该元素可以包含任何在DTD中定义的元素内容
#PCDATA:可以包含任何字符数据,但是不能在其中包含任何子元素
纯元素类型:只包含子元素,并且这些子元素外没有文本
混合类型:包含子元素和文本数据的混合体

4.属性的定义
语法:
<!ATTLIST 元素名称 属性名称 类型 属性特点>

类型有以下几种:
CDATA:属性值可以是任何字符(包括数字和中文)
,ID:
表示该属性的取值必须是唯一的;
,IDREF/IDREFS:
IDREF属性的值指向文档中其他地方声明的ID类型的值;
IDREFS同IDREF,但是可以具有由空格分开的多个引用
,
NMTOKEN/NMTOKENS:
NMTOKEN是CDATA的一个子集,表示属性值必须是英文字母、数字、句号、破折号、下划线或冒号,属性值不能含有空格
NMTOKENS与NMTOKEN类似,包含多个由空格分隔的字符
,Enumerated:
事先定义好一些值,属性的值必须在所列出的值的范围内
,ENTITY/ENTITIES,NOTATION,NOTATIONS

属性特点有以下几种:
#REQUIRED,#IMPLIED:元素的实例中可以忽略该属性,#FIXED value:元素实例中该属性的值必须为指定的固定值,Default value

5.定义实体:
内部实体--
语法:<!ENTITY 实体名 "实体值">
如:<!ENTITY writer "Donald Duck">
<!ENTITY copyright "Copyright W3CSchool">
XML实例:
<author>&writer;&copyright;</author>

外部实体:
语法:<!ENTITY 实体名 SYSTEM "URI/URL">

实体类型:
普通实体,外部实体,参数实体,外部参数实体


<newspaper>
<article author="" editor="" date="" editor="">
<headline>
</headline>
<byline>
</byline>
<lead>
</lead>
<body>
</body>
<notes>
</notes>
</article>
...
</newspaper>

<!ELEMENT 学生名册(学生*)>
<!ELEMENT 学生(姓名,性别,年龄)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 性别 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ATTLIST 学生 学号 ID #REQUIRED>

6.命名空间(NameSpace)
避免元素名冲突
使用URL作为XML的Namespace
命名空间的语法定义
xmlns:[prefix]="URL"
元素和属性都可以应用命名空间

7.总结
一个有效的XML文档必然是结构正规的,结构正规的的XML文档不一定是有效的。
一个XML文档有DTD来验证它,并且验证通过,那么它一定是有效的;
如果有DTD来验证它,但没有验证通过或者没有DTD来验证,但却符合XML的语法规则,都是正规的

DTD包含一套用来描述并限制XML文档结构的语法规则:
元素的定义规则;
元素之间的关系规则;
属性的定义规则;
可使用的实体或符号规则;

posted on 2012-06-23 23:49  郑志伟  阅读(428)  评论(0编辑  收藏  举报

导航