通过实例来学习XML DTD
使用DTD的原因:
注意:由于它自身的一些缺点,DTD终将被淘汰,但是它还是要学习的。学习完DTD后,后面继续学习XML Schema。
1,通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。
2,通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。
3,您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
您还可以使用 DTD 来验证您自身的数据。
XML文件
<?xml version="1.0" encoding="utf-8"?>
<!--导入外部dtd文件-->
<!DOCTYPE Students SYSTEM "Students.dtd">
<Students>
<Student num="z001">
<name>小明</name>
<sex>男</sex>
<age>20</age>
<subject><![CDATA[数学&英语]]></subject>
<sport>篮球</sport>
</Student>
<Student num="z002">
<name>小红</name>
<sex>女</sex>
<age>21</age>
<subject><![CDATA[数学&英语]]></subject>
<sport>篮球</sport>
</Student>
<Student num="z003">
<name>小蓝</name>
<sex>男</sex>
<age>23</age>
<subject><![CDATA[数学&英语]]></subject>
<sport>篮球</sport>
</Student>
</Students>
DTD文件:
DTD注释格式:<![ IGNORE [ 注释的内容 ]]>
<![ IGNORE [定义Student子元素必须在 Studens父 元素内出现至少一次。]]>
<!ELEMENT Students (Student+)>
<![ IGNORE [ 设置Student元素中必须有name,age,subject,sport元素并且他们的出现顺序也必须是这样的]]>
<!ELEMENT Student (name,sex,age,subject,sport)>
<![ IGNORE [ 设置num属性为必需且唯一的但是属性的值不能是以数字开头]]>
<!ATTLIST Student
num ID #REQUIRED
>
<![ IGNORE [ !ELEMENT name 定义 name 元素为 "#PCDATA" 类型
!ELEMENT sex 定义 sex元素为 "#PCDATA" 类型,下同
]]>
<!ELEMENT name (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT subject (#PCDATA)>
<!ELEMENT sport (#PCDATA)>
测试的html文件:
<html>
<head>
<!--自己编写一个简单的解析工具,去解析XML DTD是否配套-->
<script language="javascript">
// 创建xml文档解析器对象
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
// 开启xml校验
xmldoc.validateOnParse = "true";
// 装载xml文档,即指定校验哪个XML文件
xmldoc.load("Students.xml");
document.writeln("错误信息:"+xmldoc.parseError.reason+"<br>");
document.writeln("错误行号:"+xmldoc.parseError.line);
</script>
</head>
<body>
</body>
</html>
先来用IE测试一下(必须用ie而且需要把IE浏览器的编码格式改为UTF-8其他浏览器兼容模式也OK)
大家可以看到我们的XML文件完全符合DTD的要求,下面我们来修改一下我们的XML文件
(1)将第6行的num属性删去的再刷新网页得到的结果是:
(2)删除第11行的sport元素
(3)将num=”z001”的学生的sex元素和name元素调换位置
这是我们作业的一小部分后面还要用C++解析(java解析的已经完成,博客里也有)。之前就看过DTD但是只是草草的过了一下,今天重新学了一下。希望大家通过这个例子可以快速掌握DTD,当然我的并不全面。大家可以去 DTD 教程 http://www.w3school.com.cn/dtd/index.asp 详细了解。
通过实例来学习XML DTD的更多相关文章
- JavaScripts学习日记——XML DTD Schema
今日关键词: XML DTD Schema 1.XML 1 XML的概述 1.1 什么是XML XML全称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和 ...
- XML DTD详解(转)
前情提要与本文内容介绍 前面的两篇XML相关博文: 第一篇是介绍格式正规的XML: 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节 第二篇介绍DTD,引入有效的XML的概念(符合语 ...
- XML DTD语法详解
XML DTD详解 XML DTD详解 前情提要与本文内容介绍 前面的两篇XML相关博文: 第一篇是介绍格式正规的XML: 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节 第二 ...
- XML DTD详解
XML DTD详解 一个有效的XML文档必然是结构正规的,结构正规的XML文档不一定是有效的,即有效的是格式正规的一个子集. 本文详细介绍DTD,包括其对元素的定义,属性的定义,以及实体的定义. 元素 ...
- XML DTD验证
XML DTD验证 一.什么是DTD 文档类型定义(DTD:Document Type Definition)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. DTD 可被成行 ...
- Delphi之通过代码示例学习XML解析、StringReplace的用法(异常控制 good)
*Delphi之通过代码示例学习XML解析.StringReplace的用法 这个程序可以用于解析任何合法的XML字符串. 首先是看一下程序的运行效果: 以解析这样一个XML的字符串为例: <? ...
- XML Dtd Schema
在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 整体比较: XML Schema符合XML语法结构. DOM.SAX等XML API很容易解析出XML Schem ...
- REST服务使用@RestController实例,输出xml/json
REST服务使用@RestController实例,输出xml/json 需要用到的服务注解 org.springframework.web.bind.annotation.RestControlle ...
- ContentNegotiatingViewResolver多种输出格式实例: json/jsp/xml/xls/pdf
ContentNegotiatingViewResolver多种输出格式实例: json/jsp/xml/xls/pdf 本例用的是javaConfig配置 以pizza为例. json输出需要用到的 ...
随机推荐
- Jenkins系列-Jenkins介绍与部署
Jenkins是什么? Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测 ...
- hibernate映射表
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibern ...
- Delphi中Self和Sender的区别
在事件处理程序参数表中,至少含有一个参数Sender,它代表触发事件处理程序的构件,如在上例中,Sender就指Button2,有了Sender参数,可以使多个构件共用相同的事件处理程序,如下例: ...
- 使用bat执行java项目
前提:java项目要有main方法 类似写法如下: set JAVA_HOME=C:\jdk1.6 set LIB_HOME=. set JAVA_JAR=. set JAVA_JAR=%JAVA_J ...
- asp.net AES加密跟PHP的一致,将加密的2进制byte[]转换为16进制byte[] 的字符串获得
<?php class AESUtil { public static function encrypt($input, $key) { $size = mcrypt_get_block_siz ...
- hdu 3015 Disharmony Trees (离散化+树状数组)
Disharmony Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- (转)linux sort,uniq,cut,wc命令详解
linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...
- POJ3304:Segments——题解
http://poj.org/problem?id=3304 题目大意:给n条线段,求是否存在一条直线,将所有线段投影到上面,使得所有投影至少交于一点. ——————————————————————— ...
- BZOJ5338:[TJOI2018]异或——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5338 现在有一颗以1为根节点的由n个节点组成的树,树上每个节点上都有一个权值vi. 现在有Q 次操 ...
- LOJ6342::跳一跳——题解
https://loj.ac/problem/6342 f[i]表示从i开始跳的期望时间,f[n]=0. 所以f[i]=(f[i]+f[i+1]+……+f[n])/(n-i+1)+1. 移项整理可求f ...