当前位置:首页 > PHP教程 > php应用 > 列表

JS操作XML中DTD介绍及使用方法分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-01 11:48:11 浏览: 评论:0 

这篇文章主要介绍了JS操作XML中DTD介绍及使用方法,结合实例形式分析了DTD概念、原理及校验xml文档的相关操作技巧,需要的朋友可以参考下。

本文实例讲述了JS操作XML中DTD介绍及使用方法,分享给大家供大家参考,具体如下:

什么是DTD,为什么需要DTD?

DTD为英文Document Type Definition,中文意思为“文档类型定义”。DTD肩负着两重任务:一方面它帮助你编写合法的代码,另一方面它让浏览器正确地显示器代码。

一个HTML文档的基本结构可分为两个主要部分:

  1. <html> 
  2.   <head> 
  3.    头部信息 
  4.   </head> 
  5.   <body> 
  6.    可视内容 
  7.   </body> 
  8. </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。

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <!DOCTYPE poem [ 
  3.   <!ELEMENT poem (author, title, content)> 
  4.   <!ELEMENT author (#PCDATA)> 
  5.   <!ELEMENT title (#PCDATA)> 
  6.   <!ELEMENT content (#PCDATA)> 
  7. ]> 
  8. <!--为元素poem定义了三个子元素author title content, 
  9. 这三个元素必须要出现并且必须按照这个顺序 
  10. 少元素不行,多元素也不行 
  11. --> 
  12. <!--指明author,title,content里面的内容是字符串类型--> 
  13. <poem> 
  14.   <author>王维</author> 
  15.   <title>鹿柴</title> 
  16.   <content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content> 
  17. </poem> 

上面的文档就是格式良好,并且有效的。

#PCDATA(Parsed Character Data) ,可解析的字符数据,即字符串。

上面部分是DTD,在下面编写XML文档时,如果不符合其DTD规范,用XMLSpy做检查的时候,是well-formed的,但是却不是valid的。

比如根元素写:

<Students>

</Students>

Validate检查的时候就会报错,根元素和DTD中的poem不符。

制作DTD约束校验工具

  1. <!DOCTYPE html> 
  2. <html xmlns="http://www.w3.org/1999/xhtml"> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
  5. <title>Untitled Document</title> 
  6. <script> 
  7. var doc = new ActiveXObject("Mircosoft.XMLDOM"); 
  8. doc.validateOnParse = true
  9. doc.async = false;//同步校验 
  10. function jiaoyan(){ 
  11.   doc.load("./01.xml");//加载被校验的文档 
  12.   var rst = document.getElementById("result"); 
  13.   rst.innerHTML += "错误信息:" + doc.parseError.reason + "<br />";//校验的错误信息 
  14.   rst.innerHTML += "错误行数:" + doc.parseError.line + "<br />";//出错代码的行数 
  15.   rst.innerHTML += "错误列数:" + doc.parseError.linepos + "<br />";//出错代码的列数 
  16.   rst.innerHTML += "错误代码:" + doc.parseError.errorCode + "<br />";//出错代码的编号 
  17. </script> 
  18. </head> 
  19. <body> 
  20. <input type=button value="校验" onclick="jiaoyan()" /> 
  21. <div id="result"></div> 
  22. </body> 
  23. </html>

Tags: JS操作XML DTD

分享到: