DTD语法

DTD文件应该使用UTF-8或Unicode编码。
XML文档通过使用 DOCTYPE 声明语句来指明它所遵循的DTD文件,

外部文档声明
DOCTYPE 声明语句紧跟在XML文档声明语句后面,有两种格式:
<!DOCTYPE  根元素名 SYSTEM "DTD文件的URL">(本地文件)
<!DOCTYPE  根元素名 PUBLIC "DTD名称" "DTD文件的URL">,访问URL
可以下载对应的DTD
例如:
(1)<!DOCTYPE 书架 SYSTEM "
file:///E:/workspace2/SencondDemo/src/book.dtd">
(2)<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "
http://java.sun.com/dtd/web-app_2_3.dtd">

 

当然也可以在XML文档中直接嵌入DTD定义语句 ,定义格式
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 根元素名 [
 DTD定义语句
 ……
]>

 

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

 

DTD - XML 构建模块
元素 :元素是 XML 以及 HTML 文档的主要构建模块。HTML 元素的例子是 "body" 和 "table"
属性 : 
实体 :实体是用来定义普通文本的变量,当文档被 XML 解析器解析时,实体就会被展开。
如预定义实体:&lt; < &gt; > &amp; &  &quot;  "  &apos; '

PCDATA :PCDATA 的意思是被解析的字符数据(parsed character data)
可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本

CDATA:CDATA 的意思是字符数据(character data) 在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开

 

DTD - 元素

声明一个元素
<!ELEMENT 元素名称 类别>(空元素,PCDATA元素)或<!ELEMENT 元素名称 (子元素内容)>

空元素
<!ELEMENT 元素名称 EMPTY>

只有 PCDATA 的元素
<!ELEMENT 元素名称 (#PCDATA)>

带有子元素(序列)的元素
<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。

声明子元素的次数
<!ELEMENT 元素名称 (子元素名称+?*)>
 +代表最少出现一次,?代表零次或一次,*代表零次或多次的元素  | 代表非.../既...

 

DTD - 属性
声明属性
<!ATTLIST 元素名称 属性名称 属性类型 默认值>

例:<!ATTLIST 元素名称 属性名称 属性类型 默认值>
属性类型的选项
CDATA 值为字符数据 (character data)
(en1|en2|..) 此值是枚举列表中的一个值
ID  值为唯一的 id

默认值参数可使用下列值:
#REQUIRED  属性值是必需的
#IMPLIED  属性不是必需的
#FIXED value  属性值固定为value
普通文本  属性的默认值
例:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">

列举属性值
<!ATTLIST 元素名称 属性名称 (en1|en2|..) 默认值>
<!ATTLIST payment type (check|cash) "cash">

 

DTD - 实体
实体是用于定义引用普通文本或特殊字符的快捷方式的变量。
实体声明
<!ENTITY 实体名称 "实体的值">
一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。
例:<!ENTITY writer SYSTEM "
&writer;http://www.w3school.com.cn/dtd/entities.dtd"><author>&writer;</author>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值