首页 > 代码库 > DTD简单使用

DTD简单使用

DTD:Document Type Definition

  DTD是一种简单的XML约束模式语言

  DTD文档必须以utf-8或unicode编码

  注释方式与HTML、XML文档相同

 

DTD文档的引用:紧跟XML声明语句之后,有两种方式(外部引入及内部嵌入)

<?xml ... standalone="no"?>
<!
DOCTYPE ...>

外部引入DTD方式:

有如下两种引用方式:第一种方式为引用本地DTD文件,第二种为公共DTD文件方式(doctype-name一般使用根元素命名)

1 <!DOCTYPE doctype-name SYSTEM "dtd-url">
2 <!DOCTYPE doctype-name  PUBLIC "dtd-name" "dtd-url">

内部嵌入DTD方式:

1 <!DOCTYPE doctype-name [
2    ... ... 
3 ]>

 

 

一个简单的DTD文档如下:

1 <!ELEMENT bookshelf(book+)>
2     <!ELEMENT book(name,author,price)>
3         <!ELEMENT name(#PCDATA)>
4         <!ELEMENT author(#PCDATA)>
5         <!ELEMENT price(#PCDATA)>

 

DTD元素定义:<!ELEMENT 元素名称 使用规则>

使用规则如下:

EMPTY: 定义空元素

ANY: 任何形式

(#PCDATA): 普通文本

(<ELE1> <ELE2> <ELE3> ...): 无序元素组

(<ELE1>,<ELE2>,<ELE3> ...): 有序元素组(要求子元素必须以<ELE1>、<ELE2>、<ELE3>...的顺序出现)

(<ELE1>|<ELE2>|<ELE3> ...): 仅一个元素

其中后三种中元素后可以添加通配符(+:出现一次或多次;?:出现0次或一次;*:0或多次;什么都没有表示有且仅有一次)

 

如:<!ELEMENT MYFILE ((TITLE*, AUTHOR?,EMAIL)*|COMMENT)>

 

DTD属性定义:

<!ATTLIST 元素名称

Att1 属性类型 设置说明

...

>

属性类型如下:

CDATA:字符串

ENUMERATED

ID

...

设置说明如下:

#REQUIRED: 必须设置

#IMPLIED: 可有可无

#FIXED "fixed": 固定值

"default":设置默认值

 

如:<!ATTLIST Meat kind(chicken|beaf|fish|...) "fish">

 

DTD实体定义:<!ENTITY 实体名 "内容">

 

DTD简单使用