名词解释 dtd:文件类型定义(document type definition)
下面简单介绍下xml的作用:
1)、在XML编辑工具(比如XMLSPY)中,如果指定DTD,编辑器就会限制用户在文档中能添加的元素或属性。
2)、如果指定DTD,依靠清晰、准确的语法规则文档,程序员就不必为了确认对词汇表的理解程度与词汇表的设计者面对面的交流。这些规则也形成了一种可靠的错误监测机制,程序员或解析器可以由此查找可能的错误。
3)、DTD可以看作程序中的数据结构。为了编写合适的DTD,你必须深入了解程序的流程。
4)、如果不指定DTD,程序可以运行(XML可以被解析),但是你无法确定XML中的数据是完全符合要求的。有时候,不正确的数据会导致莫名其妙的错误。
1.)在eclipse中做框架开发时,就有很多的配置文件,下面我们拿ibatis的配置文件来说,以前我在项目中配置sqlmap的时候,我的xml配置文件头部的dtd是这样的:
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
它的意思就是说我用该文件类型定义的规则来约束我们的编写,可是在编写的时候没有任何提示,后来我把给dtd改成如下内容:
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
然后我再编写的时候,它就有了提示,它提示的内容就是在该dtd中定义好的规则,我们只要遵守它的规则就不会出现问题。
2.)为什么上述两个dtd中,前一个dtd没有提示,后一个有呢?其实前一个dtd是ibatis之前的版本,后来ibatis加入到了apache组织,所以我们看到它的dtd的网址都变了。
3.)还有一个方法可以判断该dtd是否是有效的dtd,其实我们可以看到dtd它是一个网址,比如:
http://www.ibatis.com/dtd/sql-map-2.dtd
http://ibatis.apache.org/dtd/sql-map-2.dtd
其实我们只要看该dtd的地址能否请求到,能请求到,就是有效的,无法响应的就是无效的!
4.)其实我们在项目中用到的所有的框架,它们的配置文件都有自己相应的dtd文件,这个文件就封装在jar的类库中,我们可以在classpath中找到它们,比如,ibatis的dtd文件就放在:com.ibatis.sqlmap.engine.builder.xml/这个包下面。
5.)知道了它的dtd验证文件,我们也可以把它放到项目中,此时dtd可以是相对路径:
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"./sql-map.dtd">
在sqlMap中:
#a# //解析sqlmap配置文件时自动加单引号,即'a'
$a$ //解析sqlmap配置文件时不加单引号,即a
如果传进来的条件需要order by的话,那一定用第二种