一、思维导图
二、学习过程
需求:xml文档用来描述数据,当你想要要求约束你的团队按照你的数据含义的格式来写xml文档怎么做?所以产生了DTD技术。
基本语法:语法规则见思维导图,它的规则是从根节点开始描述,描述根节点有几个子节点,子节点里面应该包括些什么,包含的内容类型是什么。
入门案例:
一般先写dtd文件,再写xml文件,最后写校验文件:
<!ELEMENT 班级 (学生+)>
<!ELEMENT 学生 (name,年龄,介绍)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 介绍 (#PCDATA)>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE 班级 SYSTEM "2.dtd">
<班级>
<学生>
<name>周润发</name>
<年龄>40</年龄>
<介绍>演技棒!</介绍>
<属性>水</属性>
</学生>
<学生>
<name>郭富城</name>
<年龄>41</年龄>
<介绍>演技棒!</介绍>
</学生>
</班级>
<html>
<head>
<!--ie5以上的浏览器才有xml解析工具,我用谷歌浏览器运行不出来,从microsoft可看出-->
<script>
//创建xml文档解释器对象
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
//开启xml校验
xmldoc.validateOnParse = "true";
//装载xml文档
xmldoc.load("2.xml");
//获取错误信息
document.write("错误信息是:"+xmldoc.parseError.reason+"<br>");
document.write("错误行数是:"+xmldoc.parseError.line);
</script>
</head>
<body>
</body>
</html>
运行结果:
细节:
内部dtd:SYSTEM 2.dtd 本身描述的就是文件路径,直接用dtd文件内容代替就可以。对比css的内部样式表和外部样式表
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE 班级 [<!ELEMENT 班级 (学生+)>
<!ELEMENT 学生 (name,年龄,介绍)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 介绍 (#PCDATA)>]>
<班级>
<学生>
<name>周润发</name>
<年龄>40</年龄>
<介绍>演技棒!</介绍>
<属性>水</属性>
</学生>
<学生>
<name>郭富城</name>
<年龄>41</年龄>
<介绍>演技棒!</介绍>
</学生>
</班级>
外部dtd可以引入网络资源上的dtd文件,也可以是本地的。比较简单,详见思维导图。