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 相关文章推荐
PHP 错误之引号中使用变量
May 04 PHP
MySQL 日期时间函数常用总结
Jun 12 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 PHP
php中call_user_func函数使用注意事项
Nov 21 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
thinkPHP中分页用法实例分析
Dec 26 PHP
php获取文件名称和扩展名的方法
Feb 07 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
关于laravel 日志写入失败问题汇总
Oct 17 PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 PHP
PHP获取当前时间不准确问题解决方案
Aug 14 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 获取mysql数据库信息代码
2009/03/12 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
php+mysql数据库实现无限分类的方法
2014/12/12 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
php事件驱动化设计详解
2016/11/10 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
Tensorflow 多线程设置方式
2020/02/06 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
美国在线珠宝商店:SZUL
2017/02/11 全球购物
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
酒店保洁主管岗位职责
2013/11/28 职场文书
服务行业个人求职的自我评价
2013/12/12 职场文书
运动会表扬稿大全
2014/01/16 职场文书
节约电力资源的建议书
2014/03/12 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
数控机床专业自荐信
2014/05/19 职场文书
应届生求职自荐信
2014/07/04 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
家长对孩子的寄语
2015/02/26 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题