DTD笔记
DTD(Document Type Definition)文档类型定义:
DTD被用于定义XML文档的结构,作为规范XML文档的一种内容模型,DTD在各领域已形
成统一规范的文档。
在XML文档中使用DTD:
内部DOCTYPE声明:
在XML文档中包好DTD:<!DOCTYPE 根元素 [元素声明]>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE student [
<!ELEMENT student (name,hometown,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT hometown (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
<student>
<name>Halen</name>
<hometown>unknown</hometown>
<age>ninteen</age>
</student>
外部文档声明:
DTD作为单独文件存在:
引用共有DTD文档:<!DOCTYPE 根元素 PUBLIC "文件路径及文件名">
引用私有DTD文档:<!DOCTYPE 根元素 SYSTEM "文件路径及文件名">
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE student SYSTEM "student.dtd">
<student>
<name>Halen</name>
<hometown>unknown</hometown>
<age>ninteen</age>
</student>
<!DOCTYPE student [
<!ELEMENT student (name,hometown,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT hometown (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
声明一个元素:
枝干元素声明:<!ELEMENT 元素名 (子元素1,子元素2...)>
选择性子元素声明:<!ELEMENT 元素名 (子元素1|子元素2|...)>
EMPTY 空元素
#PCDATA 字符类型数据,声明时使用#PCDATA需要用括号将其括起来
ANY 任意内容
无符号 子元素只出现1次
+ 子元素出现1次或多次
? 子元素出现0次或1次
* 子元素出现任意次
声明属性:
语法规则:<!ATTLIST 元素名称 属性名称 属性类型 默认值>
<!ATTLIST student name CDATA "unknown">
<student name="unknown">
CDATA 值为字符数据 (character data)
(en1|en2|..) 此值是枚举列表中的一个值
ID 值为唯一的 id
IDREF 值为另外一个元素的 id
IDREFS 值为其他 id 的列表
NMTOKEN 值为合法的 XML 名称
NMTOKENS 值为合法的 XML 名称的列表
ENTITY 值是一个实体
ENTITIES 值是一个实体列表
NOTATION 此值是符号的名称
xml: 值是一个预定义的 XML 值
#REQUIRED 属性值是必需的
#IMPLIED 属性不是必需的
#FIXED value 属性值是固定的
默认值 在XML中若没有定义属性值,则采用默认值
DTD实体:
内部通用实体:在DTD中定义的一段具体数据,可在DTD或XML中引用
语法规则:<!ENTITY 实体名称 "实体值">
示例:
<!ENTITY unknown "BeiJing">
<hometown>&unknown;</hometown>
语法规则:<!ENTITY 实体名称 SYSTEM "URI/URL">
示例:
<!ENTITY unknown SYSTEM "hometown.txt>
<hometown>&unknown;</hometown>
&unknown;表示hometown.txt文件的内容
语法规则:<!ENTITY % 实体名 实体内容>
示例:
<!ENTITY % info "(name,age)">
<!ELEMENT student %info;>
语法规则:<!ENTITY % 实体名 SYSTEM "URI/URL">
DTD笔记的更多相关文章
- XML学习入门
很久没更新博客了.来一发! 关于XML,当时没学过感觉难吧?其实XML还是蛮好学的,这里留下一些入门级别的内容. XML中dtd(文档类型定义)的主要用处是约束xml,也可以去约束html,xhtml ...
- XML学习笔记2——DTD
在上一篇笔记中,将文档类型分类时,曾经根据文档是否使用并遵守了DTD或Schema来区分为格式良好的XML和有效的XML,那么什么是DTD和Schema呢?DTD和Schema都是用来规范XML文档的 ...
- XML学习笔记(二)-- DTD格式规范
标签(空格分隔): 学习笔记 XML的一个主要目的是允许应用程序之间自由交换结构化的数据,因此要求XML文档具有一致的结构.业务逻辑和规则.可以定义一种模式来定义XML文档的结构,并借此验证XML文档 ...
- DTD学习笔记
1. DTD基本介绍 xml文件分为两种类型,一个是在好形式,这是well-formed,还有一个合法有效,这是valid. XML文件遵循-called"好形式"各种语法规则要 ...
- 超全面的JavaWeb笔记day05<xml&dtd&jaxp>
0.表单提交方式(*****) button提交 超链接提交 事件 1.xml简介和应用(了解) 2.xml文档声明和乱码解决(*****) 文档声明 必须放在第一行第一列 设置xml编码和保存编码一 ...
- 【代码笔记】XML深入学习:DTD约束与DTD语法(2)
DTD语法之定义实体(了解即可) 实体分为一般实体和参数实体. 定义实体:定义变量 引用实体:使用变量 一般实体:定义实体在DTD中,实体引用在xml中. 参数实体:定义实体在DTD中,实体引用在DT ...
- 【代码笔记】XML深入学习:DTD约束与DTD语法(1)
2015-12-27 文件名 student.xml <?xml version="1.0" encoding="GB2312" standalon ...
- DTD复习笔记(复习资料为菜鸟教程里的DTD教程)
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 为什么使用 DTD? 通过 DTD,您的每一个 XML 文件均可携带 ...
- HTML学习笔记——DOCTYPE和DTD,标准模式和兼容模式
主要涉及知识点: HTML与XHTML HTML与XHTML的区别 DOCTYPE与DTD的概念 DTD的分类以及DOCTYPE的声明方式 标准模式(Standard Mode)和兼容模式(Quirc ...
随机推荐
- jq:mouseover和mouseout多次触发解决办法
区别: mouseover与mouseenter 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件. 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件. mou ...
- 自己项目使用了ARC,项目中使用第三方库继续引用ARC
Objective-C引入ARC(Automatic Reference Counting)后,我们经常会面对这样一种困境:自己的项目使用了ARC,却发现要使用的第三方类库是non-ARC的:又或者自 ...
- [android开发篇]activity组件篇
https://developer.android.com/guide/components/activities.html Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打 ...
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) Problem K Tournament Wins
Problem K — limit 1 second Tournament Wins 这个题就是有2^n队伍,他现在的实力水平是第k位,采用的是淘汰制 问一下你他的胜场数的期望 这人能 win> ...
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) 一夜回到小学生
我从来没想过自己可以被支配的这么惨,大神讲这个场不容易掉分的啊 A. Carrot Cakes time limit per test 1 second memory limit per test 2 ...
- LINQ-进行数据转换
一.将多个输入联接到一个输出序列中 可以使用 LINQ 查询创建包含元素的输出序列,这些元素来自多个输入序列. 以下示例演示如何组合两个内存中数据结构,但相同的原则可应用于组合来自 XML 或 SQL ...
- spring之Annotation
spring除了提供了@Autowired,还提供了以下几类annotation. 1.@Component, @Repository, @Service, @Controller @Reposito ...
- JSON与字符串互相转换的几种方法
1 2 3 4 5 6 7 8 字符串转对象(strJSON代表json字符串) var obj = eval(strJSON); var obj = strJSON.parseJSON(); ...
- 云计算与 OpenStack
“云计算” 算是近年来最热的词了.现在 IT 行业见面不说这三个字您都不好意思跟人家打招呼. 对于云计算,学术界有各种定义,大家有兴趣可以百度一下. CloudMan 这里主要想从技术的角度谈谈对云计 ...
- keepalived学习
HA集群 keepalived heartbeat corosync cman 功能实现 vrrp协议在Linux主机上以守护进程方式, 能够根据配置文件自动生成ipvs规则 对各RS健康状态检测 组 ...