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 取得瑞年与平年的天数的代码
Aug 10 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
Chrome Web App开发小结
Sep 04 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
Laravel基础_关于view共享数据的示例讲解
Oct 14 PHP
PHP 实现缩略图
Mar 09 PHP
阿里云服务器搭建Php+Apache运行环境的详细过程
May 15 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使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
javascript window.opener的用法分析
2010/04/07 Javascript
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
2016/11/28 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
Python中的高级数据结构详解
2015/03/27 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
电气技术员岗位职责
2013/11/19 职场文书
毕业横幅标语
2014/10/08 职场文书
简易离婚协议书范本
2014/10/24 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
2015年司法局工作总结
2015/05/22 职场文书
食堂管理制度范本
2015/08/04 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS