标签:
在xml技术里,可以编写一个文档来约束一个xml文档的写法,这称之为xml约束
2. 为什么要使用xml约束?
参看提示栏
3. xml约束的作用?
4. 常见的xml约束技术
-------------------------------------------------------------------------
DTD 约束快速入门
1 ------------------没有给xml设置约束-------------------------------- 2 -------------------------------book.xml--------------------------- 3 4 <?xml version="1.0" encoding="utf-8"?> 5 <书架> 6 <书> 7 <书名>Java程序设计</书名> 8 <价格>¥59</价格> 9 <作者>风马一族</作者> 10 </书> 11 <书> 12 <书名>C++程序设计</书名> 13 <价格>¥49</价格> 14 <作者>风马一族</作者> 15 </书> 16 </书架> 17 18 ---------使用DTD技术,给xml设置约束,使xml内容出现错误的示例----- 19 -----------------------book.xml------------book.dtd----------------------- 20 <?xml version="1.0" encoding="utf-8"?> 21 <!DOCTYPE 书架 SYSTEM "book.dtd"> 22 <书架> 23 <书> 24 <书名>Java程序设计</书名> 25 <价格>¥59</价格> 26 <作者>风马一族</作者> 27 </书> 28 <书> 29 <书名>C++程序设计</书名> 30 <价格>¥49</价格> 31 <作者>风马一族</作者> 32 </书> 33 </书架> 34 35 <!ELEMENT 书架(书+)> 36 <!ELEMENT 书(书名,作者,售价)> 37 <!ELEMENT 书名(#PCDATA)> 38 <!ELEMENT 作者(#PCDATA)> 39 <!ELEMENT 售价(#PCDATA)> 40 41 42 ---------使用DTD技术,给xml设置约束,使xml内容按照约束写法的示例----- 43 -----------------------book.xml------------book.dtd----------------------- 44 45 <?xml version="1.0" encoding="utf-8"?> 46 <!DOCTYPE 书架 SYSTEM "book.dtd"> 47 <书架> 48 <书> 49 <书名>Java程序设计</书名> 50 <作者>风马一族</作者> 51 <售价>¥59</售价> 52 </书> 53 <书> 54 <书名>C++程序设计</书名> 55 <作者>风马一族</作者> 56 <售价>¥59</售价> 57 </书> 58 </书架> 59 60 <!ELEMENT 书架 (书+)> 61 <!ELEMENT 书 (书名,作者,售价)> 62 <!ELEMENT 书名 (#PCDATA)> 63 <!ELEMENT 作者 (#PCDATA)> 64 <!ELEMENT 售价 (#PCDATA)>
-------------------------------------------------------------------------
1.编程校验xml文档正确性
2.创建xml文档解析器对象
1.var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
3.开启xml校验
1.xmldoc.validateOnParse="true";
4.装载xml文档
1.xmldoc.load("book.xml");
5.获取错误信息
1.xmldoc.parseError.reason;
2.xmldoc.parseError.line
------------------------------------
因为IE默认不打开DTD校验器,因此可以使用两种方式,解决这个问题,一是使用TDE、二是编写一段JS
1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 <title>无标题文档</title> 5 </head> 6 7 <body> 8 行号: <div id="l"></div><br /> 9 原因: <div id="r"></div> 10 </body> 11 </html> 12 13 <script> 14 var xmldoc=new ActiveXObject("Microsoft.XMLDOM"); //使用javaScript创建一个浏览器内置的xml解析器 15 xmldoc.validateOnParse=true;//将xml解析器的dtd校验打开 16 xmldoc.load("book.xml"); 17 var line=xmldoc.parseError.line; 18 var reason=xmldoc.parseError.reason; 19 document.getElementById("l").innerHTML=line; 20 document.getElementById("r").innerHTML=reason; 21 </script>
------------------------------------
示例
------------book.xml-------------
1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE 书架 SYSTEM "book.dtd"> 3 <书架> 4 <书> 5 <书名>Java程序设计</书名> 6 <作者>风马一族</作者> 7 <售价>¥59</售价> 8 </书> 9 <书> 10 <书名>C++程序设计</书名> 11 <作者>风马一族</作者> 12 <售价>¥59</售价> 13 </书> df 14 </书架>
------------book.dtd-------------
1 <!ELEMENT 书架 (书+)> 2 <!ELEMENT 书 (书名,作者,售价)> 3 <!ELEMENT 书名 (#PCDATA)> 4 <!ELEMENT 作者 (#PCDATA)> 5 <!ELEMENT 售价 (#PCDATA)>
------------check.html------------
1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 <title>无标题文档</title> 5 </head> 6 7 <body> 8 行号: <div id="l"></div><br /> 9 原因: <div id="r"></div> 10 </body> 11 </html> 12 13 <script> 14 var xmldoc=new ActiveXObject("Microsoft.XMLDOM"); //使用javaScript创建一个浏览器内置的xml解析器 15 xmldoc.validateOnParse=true;//将xml解析器的dtd校验打开 16 xmldoc.load("book.xml"); 17 var line=xmldoc.parseError.line; 18 var reason=xmldoc.parseError.reason; 19 document.getElementById("l").innerHTML=line; 20 document.getElementById("r").innerHTML=reason; 21 </script>
结果:
-----------------------------------------------------------------------------------
二、dtd语法
1,如何在xml中引入dtd
标签:
原文地址:http://www.cnblogs.com/sows/p/5865838.html