JS操作XML中DTD介绍及使用方法分析


Posted in PHP onJuly 04, 2019

本文实例讲述了JS操作XML中DTD介绍及使用方法。分享给大家供大家参考,具体如下:

什么是DTD,为什么需要DTD?

DTD为英文Document Type Definition,中文意思为“文档类型定义”。DTD肩负着两重任务:一方面它帮助你编写合法的代码,另一方面它让浏览器正确地显示器代码。

一个HTML文档的基本结构可分为两个主要部分:

<html>
  <head>
   头部信息
  </head>
  <body>
   可视内容
  </body>
</html>

一个DTD应该放在每一个文档的第一行(包括空白).这样正确地放置,你的DTD才能告诉浏览器的用的是什么标记语言。在通常情况下,如果你编写的是正确代码,并拥有一个合适的DTD,浏览器将会根据W3C的标准显示你的代码。
良好的xml文档:符合xml的语法规则。
有效的xml文档:符合xml语法规则的同时还需要符合DTD文档类型定义。
有效(Valid)的XML文档:
首先,XML文档是个格式正规的(Well-formed)XML文档;
其次,需要满足DTD的要求,这样的XML文档称为有效的(Valid)XML文档。
利用DTD可以对xml文档的各个节点进行约束定义,使开发遵循一套“标准”。
DTD可以约束xml文档出现的元素,元素名称,元素的先后顺序,属性等。

DTD文档与XML文档实例的关系

类与对象;
数据库表结构与数据记录;

有了DTD,每个XML文件可以携带一个自身格式的描述。
有了DTD,不同组织的人可以使用一个通用DTD来交换数据。
应用程序可以使用一个标准DTD校验从外部世界接收来的XML数据是否有效。
可以使用DTD校验自己的XML数据。

元素的定义

JS操作XML中DTD介绍及使用方法分析

DTD中的修饰符号:

JS操作XML中DTD介绍及使用方法分析

这部分符号可以联系正则表达式的符号来记忆。重点内容

如何生成DTD文档

DTD文档有三种应用形式:

1.内部DTD文档

<!DOCTYPE 根元素[定义内容]>

2.外部DTD文档

<!DOCTYPE 根元素 SYSTEM "DTD文件路径">

3.内外部DTD文档结合

<!DOCTYPE 根元素 SYSTEM "DTD文件路径" [定义内容]>

JS操作XML中DTD介绍及使用方法分析

内部DTD

一个内部DTD的例子:
上半部分是DTD,下面是XML文档,文档要符合DTD。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem [
  <!ELEMENT poem (author, title, content)>
  <!ELEMENT author (#PCDATA)>
  <!ELEMENT title (#PCDATA)>
  <!ELEMENT content (#PCDATA)>
]>
<!--为元素poem定义了三个子元素author title content,
这三个元素必须要出现并且必须按照这个顺序
少元素不行,多元素也不行
-->
<!--指明author,title,content里面的内容是字符串类型-->
<poem>
  <author>王维</author>
  <title>鹿柴</title>
  <content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content>
</poem>

上面的文档就是格式良好,并且有效的。

#PCDATA(Parsed Character Data) ,可解析的字符数据,即字符串。

上面部分是DTD,在下面编写XML文档时,如果不符合其DTD规范,用XMLSpy做检查的时候,是well-formed的,但是却不是valid的。

比如根元素写:

<Students>
</Students>

Validate检查的时候就会报错,根元素和DTD中的poem不符。

制作DTD约束校验工具

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script>
var doc = new ActiveXObject("Mircosoft.XMLDOM");
doc.validateOnParse = true;
doc.async = false;//同步校验
function jiaoyan(){
  doc.load("./01.xml");//加载被校验的文档
  var rst = document.getElementById("result");
  rst.innerHTML += "错误信息:" + doc.parseError.reason + "<br />";//校验的错误信息
  rst.innerHTML += "错误行数:" + doc.parseError.line + "<br />";//出错代码的行数
  rst.innerHTML += "错误列数:" + doc.parseError.linepos + "<br />";//出错代码的列数
  rst.innerHTML += "错误代码:" + doc.parseError.errorCode + "<br />";//出错代码的编号
}
</script>
</head>
<body>
<input type=button value="校验" onclick="jiaoyan()" />
<div id="result"></div>
</body>
</html>
PHP 相关文章推荐
BBS(php &amp; mysql)完整版(三)
Oct 09 PHP
php Memcache 中实现消息队列
Nov 24 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 PHP
php调用C代码的实现方法
Mar 11 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 PHP
微信支付开发交易通知实例
Jul 12 PHP
php中namespace及use用法分析
Dec 06 PHP
详解yii2实现分库分表的方案与思路
Feb 03 PHP
PHP递归删除多维数组中的某个值
Apr 17 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
laravel实现按月或天或小时统计mysql数据的方法
Oct 09 PHP
PHP操作XML中XPath的应用示例
Jul 04 #PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 #PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 #PHP
PHP创建XML接口示例
Jul 04 #PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 #PHP
PHP实现关键字搜索后描红功能示例
Jul 03 #PHP
Smarty模板类内部原理实例分析
Jul 03 #PHP
You might like
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
php实现aes加密类分享
2014/02/16 PHP
Symfony的安装和配置方法
2016/03/17 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
Python模拟用户登录验证
2017/09/11 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
Sql面试题
2013/03/20 面试题
应届生法律求职信
2013/10/22 职场文书
高中生的学习总结自我鉴定
2013/10/26 职场文书
五年级音乐教学反思
2014/02/06 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
安全例会汇报材料
2014/08/23 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
同意报考证明
2015/06/17 职场文书
2015最新民情日记范文
2015/06/26 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
小学六年级毕业感言
2015/07/30 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis