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 ...
随机推荐
- Spring 常见错误解决方案记录
错误提示: 严重: Servlet.service() for servlet [datasync.controller.manager.SettingServlet] in context with ...
- 关于requirejs和grunt压缩合并是否矛盾
requirejs主要是为了模块化开发,这样带来的好处不言而喻.但是分成多个js文件增加了请求数,那么就要用到合并压缩.合并压缩了原来的许多独立的js模块,那requirejs又是怎么冲压缩的文件中找 ...
- 【11】把 GitHub 当 CMS 用
把 GitHub 当 CMS 用 你的网站需要显示一些文字,但是你还不想直接放在 HTML 里面,那你可以把 GitHub 作为你储存内容的一个地方. 这样,就可以让任何一个非程序员通过修改 Mark ...
- unittest编写Web测试用例
案例:百度搜索关键词:“unittest” test_baidu.py: from selenium import webdriver from time import sleep import un ...
- 对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。 给定二叉树的根结点指针TreeNode* root,以及链表上结点的深度,请返回一个链表ListNode,代表该深度上所有结点的值,请按树上从左往右的顺序链接,保证深度不超过树的高度,树上结点的值为非负整数且不超过100000。
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x ...
- 九度oj 题目1031:xxx定律 题目1033:继续xxx定律
题目描述: 对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止. 请计算需要经过几步才能将n变到1,具体可见样例. 输入: ...
- iOS-runtime-根据协议名调某一个类有与协议里面放的相同的方法
// // ViewController.m // ObserverTrampoline // // Created by Rob Napier on 9/7/11. // Copyright (c) ...
- 【Luogu】P2912牧场散步(TarjanLCA)
题目链接 老天……终于碰上一个除了模板之外的LCA题了 这道题用Tarjan来LCA.树上两个点的路径是唯一的,所以钦定一个根,两点间的路径就是两点到根的路径减去双倍的公共祖先到根的路径.大概很好理解 ...
- [BZOJ1595] [Usaco2008 Jan]人工湖(单调栈)
传送门 好难的题..至少对我来说. 这题就是模拟从最低的平台注水,然后将最低的填满以后从最低的平台向两边扩展,每次找最近的最低的平台h,然后将水填到h高度. 栈里存的是向外扩展的时候,有时会遇到高度递 ...
- [BZOJ3545] [ONTAK2010]Peaks(线段树合并 + 离散化)
传送门 由于困难值小于等于x这个很恶心,可以离线处理,将边权,和询问时的x排序. 每到一个询问的时候,将边权小于等于x的都合并起来再询问. .. 有重复元素的线段树合并的时间复杂度是nlog^2n # ...