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的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
PHP之uniqid()函数用法
Nov 03 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 PHP
php实现只保留mysql中最新1000条记录
Jun 18 PHP
PHP实现网站访问量计数器
Oct 27 PHP
Laravel框架实现超简单的分页效果示例
Feb 08 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 09 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 PHP
php自动加载代码实例详解
Feb 26 PHP
Linux系统下安装PHP7.3版本
Jun 26 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
?生?D片??C字串
2006/12/06 PHP
PHP循环结构实例讲解
2014/02/10 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
JS打开新窗口防止被浏览器阻止的方法
2015/01/03 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
python实现画圆功能
2018/01/25 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
django框架创建应用操作示例
2019/09/26 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
Python socket处理client连接过程解析
2020/03/18 Python
基于Python的OCR实现示例
2020/04/03 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
人民教师的自我评价分享
2014/02/21 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
走近毛泽东观后感
2015/06/04 职场文书
环保宣传语大全
2015/07/13 职场文书
法院执行局工作总结
2015/08/11 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB