1、dtd作用
XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错。(如:Tomcat)
XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束。
两个概念:
格式良好的XML:遵循XML语法的XML
有效的XML:遵循约束文档的XML
总之:约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。

2、常用的约束技术
XML DTD
XDR
SOX
XML Schema

3、dtd快速入门
DTD(Document Type Definition):文档类型定义。
作用:约束XML的书写规范
文件清单:book.xml

<?xml version="1.0" ?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架><书><书名>Java</书名><作者>sihai</作者><售价>39.00元</售价></书><书><书名>JavaScript</书名><作者>sihai</作者><售价>458.00元</售价></书>
</书架>

文件清单:book.dtd

<!ELEMENT 书架 (书+)><!ELEMENT 书 (书名,作者,售价)><!ELEMENT 书名 (#PCDATA)><!ELEMENT 作者 (#PCDATA)><!ELEMENT 售价 (#PCDATA)>

4、编写dtd的方式
DTD约束文档可以在XML文档中直接定义,也可以作为单独的文档进行编写(单独的文档必须以UTF-8编码进行保存) 。
在XML文档中编写DTD示例

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 书架 [<!ELEMENT 书架 (书+)><!ELEMENT 书 (书名,作者,售价)><!ELEMENT 书名 (#PCDATA)><!ELEMENT 作者 (#PCDATA)><!ELEMENT 售价 (#PCDATA)>
]>
<书架><书><书名>Java</书名><作者>sihai</作者><售价>39.00元</售价></书><书><书名>JavaScript</书名><作者>sihai</作者><售价>458.00元</售价></书>
</书架>

5、引入dtd文档
XML使用DOCTYPE声明语句来指明它所遵循的DTD文档,有两种形式:
当引用的DTD文档在本地时,采用如下方式:

如:<!DOCTYPE 书架 SYSTEM “book.dtd”>
当引用的DTD文档在公共网络上时,采用如下方式:

如:

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd">

6、定义dtd
在DTD文档中使用ELEMENT关键字来声明一个XML元素。
语法<!ELEMENT 元素名称 使用规则>
使用规则:
(#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)
EMPTY:用于指示元素的主体为空。比如

ANY:用于指示元素的主体内容为任意类型。
(子元素):指示元素中包含的子元素

定义子元素及描述它们的关系:
如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档。
如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL) 如果子元素用“|”分开,说明任选其一。 如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL) 用+、*、?来表示元素出现的次数 如果元素后面没有+*?:表示必须且只能出现一次 +:表示至少出现一次,一次或多次 *:表示可有可无,零次、一次或多次 ?:表示可以有也可以无,有的话只能有一次。零次或一次 如: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

6.1、定义属性
在DTD文档中使用ATTLIST关键字来为一个元素声明属性。
语法:

<!ATTLIST 元素名属性名1 属性值类型 设置说明属性名2 属性值类型 设置说明…
>
<!ATTLIST 商品类别 CDATA #REQUIRED颜色 CDATA #IMPLIED
>
对应的XML为:<商品 类别=“服装” 颜色=“黄色” />

6.2、属性定义2

属性值类型:
CDATA:表示属性的取值为普通的文本字符串
ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)
ID:表示属性的取值不能重复
设置说明
REQUIRED:表示该属性必须出现
IMPLIED:表示该属性可有可无
FIXED:表示属性的取值为一个固定值。语法:#FIXED “固定值”
直接值:表示属性的取值为该默认值

7、定义实体
定义实体就是为一段内容指定一个名称,使用时通过这个名称就可以引用其所代表的内容。
在DTD文档中使用ENTITY关键字来声明一个实体。
实体可分为:引用实体和参数实体,两者的语法不同

8、引用实体
概念:在DTD中定义,在XML中使用
语法:<!ENTITY 实体名称 “实体内容”>
引用方式(注意是在XML中使用):&实体名称;

xml教程之dtd约束相关推荐

  1. web.xml引入web-app dtd约束

    常见的框架使用dtd约束的有struts2,hibernate等 1.新建一个java项目 2 在src下面新建一个包com.dxm.dtd 3 在该包上按快捷键ctrl+N新建其他文件,输入xml ...

  2. xml教程之java解析xml文档

    1.java解析xml文件介绍 XML解析方式分为两种:DOM方式和SAX方式 DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式. SAX: ...

  3. XML内部DTD约束 Day24

    <?xml version="1.0" encoding="UTF-8"?> <!-- 内部DTD --> <!-- XML:ex ...

  4. xml的应用与dtd约束

    1.xml的应用 *不同的系统之间的传输数据(qq消息传输) *用来表示生活中有关系的数据(省市区的包含关系) *经常用在文件配置 **比如现在连接数据库,肯定知道数据库的名称和密码及用户名.    ...

  5. XML的DTD约束和Schema约束

    ajax是什么? 如图: XML是什么? 可扩展标记语言,标记数据,定义数据类型 允许用户对自己的标记语言进行定义的源语言 xml详细介绍:(http://www.w3school.com.cn/xm ...

  6. JAVA XML 之 DTD约束

    什么是约束? 约束是用来限定xml文件中可使用的标签以及属性. 也就是告诉程序员,xml该怎么写. 约束分为DTD约束和Schema约束 DTD语法规则 复杂元素也就是有子元素的元素. 简单元素则是没 ...

  7. 【JAVA与XML、dtd约束、Schema约束】

    一.XML. (1)XML:Extensible Markup Language (2)XML是一种标记语言. (3)XML的设计宗旨是传输数据,而不是显示数据. (4)XML标签没有被预定义,即使用 ...

  8. Kail Linux渗透测试教程之Recon-NG框架

    Kail Linux渗透测试教程之Recon-NG框架 信息收集 信息收集是网络攻击最重要的阶段之一.要想进行渗透攻击,就需要收集目标的各类信息.收集到的信息越多,攻击成功的概率也就越大.本章将介绍信 ...

  9. ArduinoYun教程之Arduino环境与Linux环境的桥梁Bridge

    ArduinoYun教程之Arduino环境与Linux环境的桥梁Bridge Arduino环境与Linux环境的桥梁--Bridge 在第一章中介绍Arduino Yun硬件的时候提到过,它上面有 ...

最新文章

  1. 简述3032路pcm帧的结构_高级数据链路控制协议-HDLC
  2. github/gitlab同时管理多个ssh key
  3. Bound Found POJ - 2566 (尺取+前缀和)
  4. VHDL常用操作符介绍
  5. 小括号教学设计导入_如何在教学中凸显出学生的主体地位呢?原来只需要做到这几点即可...
  6. MASK LBP代币拍卖共募集近4000万美元
  7. java 定义三维列表_java 多维数据定义
  8. 前台系统(内容管理)
  9. pop3接收网易163邮件及下载超大附件
  10. mysql查询年龄段多少人_mysql中一张(居民)表按年龄段查询数据
  11. js控制的回到顶端goTop的使用
  12. td标签高度属性不起作用
  13. 5分钟学废携程出品配置中心阿波罗的原理与搭建
  14. Unity--游戏字幕
  15. Kubernetes权威指南(下)
  16. 算法分享: 动态规划之拱桥回文算法
  17. 高等数学 - 条件收敛和绝对收敛有什么区别
  18. Android Manifest功能与权限描述大全,flutter安装androidsdk
  19. Linux下的Curses库的下载与安装
  20. 《剑指offer》专题—算法训练 day02

热门文章

  1. 图形学基础概念(画布/位图/像素等)
  2. php东软期末,今天,想告诉大家,我在东软挺好的
  3. web of science 数据库都包括哪些?
  4. PAT乙级 1018 锤子剪刀布 (JAVA)
  5. 计算机内存存取时间和存储周期,在计算机中什么是内存存取时间和存储周期?...
  6. pcl1.8.1下载安装
  7. 西门子S-1200PLC开发笔记(一、选择软件版本)
  8. 安卓开发网!Android社招最全面试题,大厂面试题汇总
  9. 密码123456,这意味着什么?
  10. c1 驾考成都龙岗科目三考试经验