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 相关文章推荐
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 PHP
PHP下通过file_get_contents的代理使用方法
Feb 16 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
smarty获得当前url的方法分享
Feb 14 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
php自动提交表单的方法(基于fsockopen与curl)
May 09 PHP
php PDO异常处理详解
Nov 20 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
Jun 16 PHP
php支付宝系列之电脑网站支付
May 30 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中经典方法实现判断多维数组是否为空
2011/10/23 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
vue 页面跳转的实现方式
2021/01/12 Vue.js
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
python3实现名片管理系统
2020/11/29 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
分布式数据库需要考虑哪些问题
2013/12/08 面试题
优秀民警事迹材料
2014/01/29 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
国旗下演讲稿
2014/05/08 职场文书
2014年企业工会工作总结
2014/11/12 职场文书