DTD学习笔记

一、什么是DTD

DTD全名(Document type definition)中文译名 文档类型定义

XML文件的文档类型定义(Document Type Definition)可以看成一个或者多个XML文件的模板,在这里可以定义XML文件中的元素、元素的属性、元素的排列方式、元素包含的内容等等。

DTD(Document Type Definition)概念缘于SGML,每一份SGML文件,均应有相对应的DTD。对XML文件而言,DTD并非特别需要,well-formed XML就不需要有DTD。DTD有四个组成如下:

  • 元素(Elements)
  • 属性(Attribute)
  • 实体(Entities)
  • 注释(Comments)

但由于DTD限制较多,使用时较不方便,近来已渐被XML Schema所取代。

二、DTD声明

1.内部声明

即直接在XML文档内部声明,具体语法为

<!DOCTYPE 根元素 [元素声明]>

例如

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE SHINO [
  <!ENTITY AUTHOR "Hermit_Yoshino">
  <!ELEMENT SHINO (head,body)>
  <!ELEMENT head (#PCDATA)>
  <!ELEMENT body (#PCDATA)>
]>
<SHINO>
  <head>by:&AUTHOR;</head>
  <body></body>
</SHINO>

2.外部声明

即引入在外部声明的.dtd文件

语法为

<!DOCTYPE 根元素 SYSTEM "文件名">

例如

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SHINO SYSTEM "SHINO.dtd">

<SHINO>
  <head>by:&AUTHOR;</head>
  <body></body>
</SHINO>

外部的 SHINO.dtd 文件

<!ENTITY AUTHOR "Hermit_Yoshino">
<!ELEMENT SHINO (head,body)>
<!ELEMENT head (#PCDATA)>
<!ELEMENT body (#PCDATA)>

三、具体语法

1.元素

在 DTD 中,XML 元素通过元素声明来进行声明。元素声明可以使用以下语法:

<!ELEMENT 元素名称 类别>

<!ELEMENT 元素名称 (元素内容)> 

其中 类别 可以是以下几种:

  • EMPTY    空(无任何元素)              < />

  • ANY         任意元素                        < ></ >

元素内容 可以是以下几种:

  • #PCDATA          只包含PCDATA
  • 子元素名            多种元素使用 , 分隔,同时出现顺序必须与声明时的顺序一致

                                  使用 | 则表示任选其一

                                  在元素中添加符号可以限制其出现次数,默认为有且仅出现一次

                                  +   一次或多次   ? 0次或一次    *  0次或多次

2.属性

声明语法

<!ATTLIST 元素名称 属性名称 属性类型 默认值>

属性类型   可选项:

类型描述
CDATA值为字符数据 (character data)
(en1|en2|..)此值是枚举列表中的一个值
ID值为唯一的 id
IDREF值为另外一个元素的 id
IDREFS值为其他 id 的列表
NMTOKEN值为合法的 XML 名称
NMTOKENS值为合法的 XML 名称的列表
ENTITY值是一个实体
ENTITIES值是一个实体列表
NOTATION此值是符号的名称
xml:值是一个预定义的 XML 值

默认值  可选项

解释
属性的默认值
#REQUIRED属性值是必需的
#IMPLIED属性不是必需的
#FIXED value属性值是固定的

3.实体

内部实体

<!ENTITY 实体名称 "实体的值">

外部实体

<!ENTITY 实体名称 SYSTEM "URI/URL">

四、其他

转义字符

转义字符
&lt;

<

&gt;>
&amp;&
&quot;"
&apos;'

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值