DTD规范


1、使用DTD的好处

v   用DTD提供统一格式。例如,用DTD规定个人简历文档的逻辑结构,包括所需填写内容和内容排列方式,所有按照这个DTD编写的个人简历都将具有统一格式。

v 用DTD验证数据有效性。DTD约束文档逻辑结构,可以根据DTD检查数据,验证其是否符合规定要求,确保数据正确和有效。

v 根据DTD编写文档样式单。DTD能在不提供原始资料的情况下,表示出一个网页或文档的架构元素,这意味着用户能先根据DTD为未来的文档编写样式单,然后再安全且不破坏结构的把用户的资料放上去,提高工作效率。

2、Dtd文档的基本格式

内连接格式:

<?xml  version=”1.0 encoding=”utf_8” standalone=”true”?>

<!DOCTYPE 根标记的名称[约束]>   内部DTD

 

       外连接格式

<!DOCTYPE 根标记的名称 SYSTEM “dtd1.dtd”>   dtd的引入

 

格式:<根标记>

                            <字标记>

                            </字标记>

                            ………..

</根标记>

3.DTD对元素声明及应用:

.      Dtd1.dtd的定义能在xml文档出现的元素、属性、xml文档的结构

Dtd的格式:

                      <?xmlversion=”1.0”encoding=”utf_8”?>

                     <!ELEMENT  元素的名称 元素的内容>

                     <!ATTLIST元素名 属性名 类型keyword “默认值”>  对属性的设置 

 

·        (1)空元素即为单标记 <br/>  或者   <br></br>  两者形式一样,但不能加空格   用EMPTY修饰

(2)ANY型的,因为约束是对文件进行规范的,所以any相对来说没有任何意义。可以成为无效的文件

有效的XML文档的所以属性都必须在约束中声明才为有效的文档

 

(3)定义字符串内容的元素

              <!ELEMENT元素名 #PCDATA>

              <!ELEMENT书籍列表 (#PCDATA)>

 

(4)混合类型内容的元素-1------既有字符串内容,又有子元素的    

              但一般并不推荐使用这个元素                                                    

        <!ELEMENT  学生 (#PCDATA|学号|姓名)*> 

注:  | 和* 一起表示出现多次,而且是无序的,可以出现多次,而且文本出现的顺序是任意的

 

              例子:

                      <?xml version=”1.0” encoding=”utf_8”?>

                     <喜欢的游戏>

                                   这是我喜欢的游戏

                                   <游戏>

                                                 CF游戏好玩

                                                 <游戏类型>463</游戏类型>

                                                 <游戏名称>4trt</游戏名称>

                                                 CF游戏好玩

                                                 <游戏类型>rewtre</游戏类型>

                                                 <游戏名称>l;lkjhgfds</游戏名称>

                                   </游戏>

                     </喜欢的游戏>

 

                           

混合类型内容的元素2-------包含的不是文本,也是子元素

              <!ELEMENT  学生  (学号,姓名)*>   * 代表0次或多次

 

(5)定义子元素

              有序的子元素

              互斥的子元素

              根据出现的频率来定:

 

              有序的子元素的例子:

                     <书籍列表>

                            <计算机书籍>

                                   <书名>顺利度过</书名>

</计算机书籍>

<计算机书籍>

                                   <价格>顺利度过</价格>

</计算机书籍>

                     </书籍类表>

4、DTD对属性声明

       属性是描述元素的额外信息的,是对元素的修饰与补充。一般来说,信息详实的XML文档都是一个特点,即元素通过属性来描述边缘信息。

       在DTD 中,属性通过 ATTLIST 声明来进行声明。一个属性声明可以声明一个元素的多个属性。

       (1)对属性声明的格式:<!ATTLIST 元素名 属性名 属性类型 keyword “默认值”>

      

                                     <!ELEMENT作者 地址 CDATA #FIXED  “保定市”> 

注: #FIXED “保定市  可设,可不设,系统默认

   (2) 对属性的限制条件:

                     #CDATA       纯文本的的类型

                     #IMPLIED  可选的

                     #FIXED “保定市”  指定固定值

                     #PEQUIRED 必须为该属性指定默认值

                     #LMMPLIED  不指定默认值

                     #PCDATA

 

 (3)属性的类型:

              1、CDATA  字符串数据

              2、(en1|en2…..) 枚举类型

                            例子:<!ATTLIST  作者  性别(男|女)  “男”>   默认值

              3、ID    标识符必须是唯一的

                            例子:<!ATTLIST 计算机书籍 ID # REQUIRED>

 

              4、IDREF  该值必须为另外一个的属性值

                     例子:<!ELEMNT 书籍列表(计算机书籍 | 读者)>

                              <!ELEMENT 读者 EMPTY>

                              <!ATTLIST  读者 书号 IDREF  # IMPLIED >  # IMPLIED表示可选的

 

              5、IDREFS 表示可引用多个id值

                     <!ATTLIST  读者 书号 IDREFS  # IMPLIED >

 

                     <读者 书号=“0001_0002”>

 

 

6、NMTOKEN 和 NMTOKENS类       

                     NMTOKEN 和CDATA类型相比,NMTOKEN要求严格

                     例子:

                            <!ATTLIST地址 NMTOKEN    # PEQUIRED>

 

NMTOKENS可以取多个合法的元素

 

5、实体的定义-------ENTITY  ENTITIES 类型的

       (1)实体的概念:实体是包含了文档片段的虚拟存储单元,可用来存储XML声明、DTD其他形式的文本及二进制数据等。简单来讲就是一段代码或数据的代称,这个代称即为实体

的名字。

       (2)实体引用:是用一个字符串代替另一个字符串。 

(3)实体的引用例子: conent “java书籍的详细内容的介绍”

                                   <书名>conten</书名>    用content来代替字符串的内容,减少麻烦

       (4)实体引用的作用:

Ø   实体定义的作用:提高代码的服用,方便修改,维护XML文档

Ø   使用某些特殊的符号,这些特殊的符号可能会使XML解析器混淆

Ø 减少字符输入量,如果某个字符串特别长,而且需要经常使用,则可以定义为实体

(5)实体的分类:可解析的实体和不可解析的实体

              1、按照实体的具体内容分类

                     可解析的实体:可解析实体的具体内容为简单的字符、数字、文本块。

                     不可解析的实体:具体内容则为图片、声音等二进制文件。

                     注:一般情况下都为不可解析的实体

           2、按照逻辑存储分类:

                     内部实体和外部实体

                                   以下都是内部实体  

3、按使用范围分:

                     一般实体和参数实体:

                            一般(普通)实体的定义的语法--------在xml文档中使用:

                                          <!ELNTITY  实体名  “实体值”>

                                          使用实体时:&实体名;

                                          注意:实体是在dtd中定义的

                                   普通实体可以作为属性来表示

                                          <!ATTLIST简要介绍 connect  >

                                          <简要介绍 connect=”&title”>  引用实体当做属性

                                   可以是元素

                                          <简要介绍>&实体名</简要介绍>

 

                      参数实体------在dtd文档中使用,对dtd中的属性设置:

                                          语法:

                                                 <!ENTITY  %实体名 “实体值“>

                                                        使用:&实体名

 

                                                  <!ENTITY %  boolean “yes|no|true|false”>

                                                       <!ATTLIST 作者 性别 (%boolean;)>

             

                            两者不同:

                                   一般实体   用于xml文档中   % 实体名 ““    % 实体名;

                                   参数实体   用于dtd文档中    实体名  ““      &实体名;

 

              外部实体:

                     在dtd中定义

                            <!ELEMENT  out  SYSTEM  “文档名称“>

                            <!ELEMENT  out SYSTEM  “extententity.txt“> out代替了文本中的内容

 

              对外部实体的引用 : <简要介绍>&outer;</简要介绍>

 

       注:元素的定义用ELEMENT

属性的定义用ATTLIST

 

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值