本文作者:FUNKYE(陈健斌),杭州某互联网公司主程。
了解xml文件的同学应该都知道xml文件的验证模式保证了xml文件的正确性,而比较常用的验证模式有两种:DTD&XSD.
下面介绍两种模式的区别
DTD
DTD:文档类型定义.是一种xml约束模式语言,是xml文件的验证机制,属于xml文件组成的一部分
包括:元素的定义规则,元素之间的关系定义规则,元素使用的属性,可使用的实体/符号规则
使用:使用DTD验证模式时,需要在xml文件的头部进行声明,比如:
1 | <?xml version="1.0" encoding="utf-8"?> |
spring中加载DTD程序源码:
1 | Resource resource = new ClassPathResource(dtdFile, getClass()); |
struts1中的源码使用DTD:
1 | protected String[] registrations = |
可以看到publicID直接写死,systemId直接写死.与Spring对比,Spring的publicId由xml动态指定,如果需要添加dtd或schema版本等不需要修改代码,Struts必须修改代码,或许大家也看到差距了,感觉Struts1.X都很久没更久了,曾经的辉煌都被埋没了.[不知道哪种利益驱动了,搞了个struts2.x,完全不同的理念]
XSD
XML Schema语言就是XSD(XML Schema Definition)
XML Schema:描述了xml文档指定的结构和内容,可以指定一个XML Schema来验证某个xml文档是否符合其要求
要求:除了要声明命名空间外(http://www.Springframework.org/schema/beans),还必须制定该命名空间对应的XML Schema文件的存储位置.
使用:通过schemaLocation属性来指定名称空间所对应的XML Schema文档的存储位置.包含两个部分:
1.命名空间的url
2.XML Schema文件位置或url地址(xsi:schemaLocation=”http://www.Springframework.org/schema/beans http://Springframework.org/schema/Spring-beans.xsd")
示例:
1 |
|
验证模式的读取
1 | /** |