看懂mybatis-config.dtd文件
首先明白什么是dtd文件:
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
说白了就是先定义一个规则,以后你写的(外部接受的)xml文件都必须符合这个规则。
学习dtd文件的相关知识可参考:DTD 教程 | 菜鸟教程
我们可以看到dtd文档的第一部分为:
<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>
如图:
configuration :表示定义的配置文件根节点是configuration
子节点包含:properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?
并且他们先后顺序也必须和定义的顺序一致
如:
我们定义了如下的配置文件,
我们可以看到之前我们定义的dtd文件, databaseIdProvider节点在environments之后,如果我们现在将databaseIdProvider放在environments之前,我们的编译工具就会帮我们检测出错误,如图:
解释:
?:表示该元素可以出现0次或多次
我们可以看到dtd文档的第二部分为:
<!ELEMENT databaseIdProvider (property*)>
<!ATTLIST databaseIdProvider
type CDATA #REQUIRED
>
这段代码的意思就是:
databaseIdProvider节点有个type属性,而且是必填的,有多个property节点(*:表示有0个或者多个)
如图:
此时如果我们将dtd文件中的*去掉:
该节点报错:
property的节点定义为:(解释方法同上)
<!ELEMENT property EMPTY>
<!ATTLIST property
name CDATA #REQUIRED
value CDATA #REQUIRED
>
有了这个前置知识 我相信大家不仅能看懂:mybatis-3-config.dtd 、mybatis-3-mapper.dtd文件,其他的dtd文件都能看穿底裤。
#REQUIRED解释:
看懂mybatis的mybatis-config.xsd文件:
要看懂xsd文件先要知道XSD文件的相关知识:
XML Schema 可定义 XML 文件的元素。
简易元素指那些只包含文本的元素。它不会包含任何其他的元素或属性。
什么是简易元素?
简易元素指那些仅包含文本的元素。它不会包含任何其他的元素或属性。
不过,"仅包含文本"这个限定却很容易造成误解。文本有很多类型。它可以是 XML Schema 定义中包括的类型中的一种(布尔、字符串、数据等等),或者它也可以是您自行定义的定制类型。
您也可向数据类型添加限定(即 facets),以此来限制它的内容,或者您可以要求数据匹配某种特定的模式。
学习教程参考:XSD 简易元素 | 菜鸟教程
可以自己去研究一下xsd文件的教程,xsd比dtd更加强大,但他们在mybatis中的作用是一样的,所以此处不作详解