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 异常处理实现代码
Mar 10 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
PHP之autoload运行机制实例分析
Aug 28 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
Oct 21 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
基于PHP实现等比压缩图片大小
Mar 04 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
超级简单的发送邮件程序
2006/10/09 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
[JS]点出统计器
2020/10/11 Javascript
javascript之AJAX框架使用说明
2010/04/24 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
js如何编写简单的ajax方法库
2017/08/02 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
python config文件的读写操作示例
2019/09/27 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
2020/05/11 Python
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
中专毕业生自我鉴定范文
2013/11/09 职场文书
大学军训感言
2014/01/10 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python