XML——DTD
body, table{font-family: 微软雅黑; font-size: 10pt}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}
|
XML DTD
XDR
|
SOX
XML Schema
|
|
文件清单:book.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE 书架 SYSTEM "book.dtd"> //加入约束
<书架>
<书>
<书名>浪潮之巅</书名>
<作者>吴军</作者>
<售价>39.00元</售价>
</书>
<书>
<书名>数学之美</书名>
<作者>吴军</作者>
<售价>28.00元</售价>
</书>
</书架>
|
//约束
文件清单:book.dtd
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
|
校验解析器
|
IE5以上浏览器内置了XML解析工具:Microsoft.XMLDOM,开发人员可以编写javascript代码,利用这个解析工具装载xml文件,并对xml文件进行dtd验证。
创建xml文档解析器对象
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
开启xml校验
xmldoc.validateOnParse = "true";
装载xml文档
xmldoc.load("book.xml");
获取错误信息
xmldoc.parseError.reason;
xmldoc.parseError.line
|
| book.xml //编码不能系统默认 | book.dtd //编码不能系统默认 | test.html |
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名>浪潮之巅</书名>
<作者>吴军</作者>
<售价>39.00元</售价>
</书>
<书>
<书名>数学之美</书名>
<作者>吴军</作者>
<售价>28.00元</售价>
</书>
</书架>
|
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
结果: |
<script type="text/javascript">
//创建xml文档解析器对象
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
//开启xml校验
xmldoc.validateOnParse = "true";
//装载xml文档
xmldoc.load("book.xml");
//获取错误信息
var reason=xmldoc.parseError.reason;
var line=xmldoc.parseError.line
document.write("reason = "+reason+"line = "+line);
</script>
|
|
book.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 书架 [
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
]>
<书架>
<书>
<书名>浪潮之巅</书名>
<作者>吴军</作者>
<售价>39.00元</售价>
</书>
</书架>
|
| 定义元素 | 定义属性1 |
|
★在DTD文档中使用ELEMENT关键字来声明一个XML元素。
★语法:<!ELEMENT 元素名称 使用规则>
☞使用规则:
☀(#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)
☀EMPTY:用于指示元素的主体为空。比如<br/> //没东西,但是可以有属性
☀ANY:用于指示元素的主体内容为任意类型。
☀(子元素):指示元素中包含的子元素
☞定义子元素及描述它们的关系:
☀如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档。
如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)
☀如果子元素用“|”分开,说明任选其一。
如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)
☀用+、*、?来表示元素出现的次数
▪如果元素后面没有+*?:表示必须且只能出现一次
▪+:表示至少出现一次,一次或多次
▪*:表示可有可无,零次、一次或多次
▪?:表示可以有也可以无,有的话只能有一次。零次或一次
☀如: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL*) | COMMENT)>
|
★在DTD文档中使用ATTLIST关键字来为一个元素声明属性。
★语法:
<!ATTLIST 元素名
属性名1 属性值类型 设置说明
属性名2 属性值类型 设置说明
…
>
★例如:
<!ATTLIST 商品
类别 CDATA #REQUIRED
颜色 CDATA #黄色
种类 (鸡肉|牛肉|猪肉|鱼肉)"鸡肉"
>
对应的XML为:<商品 类别=“服装” 颜色=“黄色”/> //种类属性不写默认是鸡肉,显示写出来必须是枚举里面的值;如果上面没有"鸡肉"就不能不写
|
| 定义属性2 | 定义属性示例 |
| ★属性值类型:
☀CDATA:表示属性的取值为普通的文本字符串
☀枚举:只能从枚举列表中任选其一,如 (鸡肉|牛肉|猪肉|鱼肉)
☀ID : 表示属性的取值不能重复
★设置说明
☀#REQUIRED:表示该属性必须出现
☀#IMPLIED:表示该属性可有可无
☀#FIXED : 表示属性的取值为一个固定值。语法:#FIXED "固定值"
☀直接值:表示属性的取值为该默认值
|
<!ATTLIST 页面作者
姓名 CDATA #IMPLIED
年龄 CDATA #IMPLIED
联系信息 CDATA #REQUIRED
网站职务 CDATA #FIXED "页面作者"
个人爱好 CDATA "上网"
>
<?xml version = "1.0" encoding="utf-8" standalone="yes"?>
<!DOCTYPE 购物篮 [
<!ELEMENT 购物篮 (肉+)>
<!ELEMENT 肉 EMPTY>
<!ATTLIST 肉 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉">
]>
<购物篮>
<肉 品种="鱼肉"/>
<肉 品种="牛肉"/>
<肉/>
</购物篮>
|
| 定义属性示例 | 定义实体 |
|
★ID表示属性的设置值为一个唯一值。
<?xml version = "1.0" encoding="GB2312" ?>
<!DOCTYPE 联系人列表[
<!ELEMENT 联系人列表 ANY>
<!ELEMENT 联系人(姓名,EMAIL)>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>
<!ATTLIST 联系人 编号 ID #REQUIRED>
]>
<联系人列表>
<联系人 编号=“a">
<姓名>张三</姓名>
<EMAIL>zhang@it315.org</EMAIL>
</联系人>
<联系人 编号=“b">
<姓名>李四</姓名>
<EMAIL>li@it315.org</EMAIL>
</联系人>
</联系人列表>
|
★定义实体就是为一段内容指定一个名称,使用时通过这个名称就可以引用其所代表的内容
★在DTD文档中使用ENTITY关键字来声明一个实体。
★实体可分为:引用实体和参数实体,两者的语法不同
|
| 定义引用实体 | 定义参数实体(了解) |
|
概念:在DTD中定义,在XML中使用
语法:<!ENTITY 实体名称 "实体内容">
引用方式(注意是在XML中使用):&实体名称;
<?xml version = "1.0" encoding="utf-8" standalone="yes"?>
<!DOCTYPE 购物篮 [
<!ELEMENT 购物篮 (菜)>
<!ENTITY 菜 "进口蔬菜">
<!ELEMENT 菜 (#PCDATA)>
]>
<购物篮>
<菜>&菜;</菜>
</购物篮>
|
概念:在DTD中定义,在DTD中使用
语法:<!ENTITY % 实体名称 “实体内容”> //注意,这里有空格,怎么使用不会
引用方式(注意是在DTD中使用):%实体名称;
//内部子集中参数实体不能用在标记声明中 |
XML——DTD的更多相关文章
- XML DTD验证
XML DTD验证 一.什么是DTD 文档类型定义(DTD:Document Type Definition)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. DTD 可被成行 ...
- JavaScripts学习日记——XML DTD Schema
今日关键词: XML DTD Schema 1.XML 1 XML的概述 1.1 什么是XML XML全称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和 ...
- XML Dtd Schema
在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 整体比较: XML Schema符合XML语法结构. DOM.SAX等XML API很容易解析出XML Schem ...
- XML DTD详解(转)
前情提要与本文内容介绍 前面的两篇XML相关博文: 第一篇是介绍格式正规的XML: 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节 第二篇介绍DTD,引入有效的XML的概念(符合语 ...
- 通过实例来学习XML DTD
使用DTD的原因: 注意:由于它自身的一些缺点,DTD终将被淘汰,但是它还是要学习的.学习完DTD后,后面继续学习XML Schema. 1,通过 DTD,您的每一个 XML 文件均可携带一个有关其自 ...
- XML DTD语法详解
XML DTD详解 XML DTD详解 前情提要与本文内容介绍 前面的两篇XML相关博文: 第一篇是介绍格式正规的XML: 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节 第二 ...
- XML DTD详解
XML DTD详解 一个有效的XML文档必然是结构正规的,结构正规的XML文档不一定是有效的,即有效的是格式正规的一个子集. 本文详细介绍DTD,包括其对元素的定义,属性的定义,以及实体的定义. 元素 ...
- xml dtd 定义元素
ANY 如果需要定义某个元素的值可以是任意类型,可采用如下语法 <!ELEMENT 元素名 ANY> DTD必须定义XML文档中允许出现的所有元素,所以下面这样是不行的,因为<hel ...
- xml dtd 内部dtd 外部DTD 公共DTD
(一个可以用来校验xml有效性的网站:http://www.xmlvalidation.com/) (经测试 eclipse neon 对于dtd的校验并不严格,比如DOCTYPE后面的根元素名与实际 ...
随机推荐
- android进入页面会定位到ListView问题解决方法
在我们的页面中如果存在有ListView,当我们进入这个activity时,页面会定位到ListView的位置去,而不是activity的头部,这是由于ListView会去默认获取焦点所造成的. 解决 ...
- 内核通信之Netlink源码分析-用户内核通信原理
2017-07-05 本节从一个小案例入手,结合源码分析下通过netlink进行内核和用户通信的流程. 内核端 按照传统CS模式,其实内核端可以作为是服务器端,用以接收用户的请求并作出处理,但是从ne ...
- Hadoop集群完全分布式坏境搭建
前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...
- windos 查看指定端口,将指定进程杀死
>netstat -aon | findstr “80″ Proto Local Address Foreign Address State ...
- Extjs之表单提交
Extjs的三种提交方式: 表单Ajax提交,普通提交,单独Ajax提交: 表单Ajax提交(默认提交方式) 提交函数:当按下表单中的提交按钮时执行下面的 btn函数,按照表单的 name进行提交. ...
- cocos代码研究(8)持续动作子类学习笔记
理论部分 时间间隔动作(ActionInterval)是一个在一段时间内执行的动作. 它有一个开始时间和完成时间.完成时间等于起始时间加上持续时间. ActionInterval的子类与位置有关的动作 ...
- foo、bar美国版的张三李四
不管看javascript还是其他语言举例,经常看到使用foo和bar来充当变量.那么究竟foo.bar是什么鬼? 一说:foo 和 bar 组合在一起所构成的 foobar 应该最能反映其原始的意思 ...
- validform校验框架不显示错误提示
今天做前端的校验,发现validform这个框架在项目中有,于是就网上搜索一下,开始使用,网上说,嗯,只写一句代码就可以用啦 $("#itemForm").Validform(); ...
- Cooperation.GTST团队第三周项目总结
项目进展 这周我们仍然在学习使用博客园的相关接口,页面的一个基本模块已经搭建出来了,但是页面整体效果还没有完全做出来.另外,我们在使用其他的APP时留意到许多APP都使用上拉加载和下拉刷新的效果,所以 ...
- Tomcat 发布项目 conf/Catalina/localhost 配置 及数据源配置
本文介绍通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目.因为这样对 tomcat 的入侵性最小,只需要新增一个配置文件,不需要修改原有配置:而且支持动 ...