maybatis源码分析(一)——看懂mybatis-config.dtd和mybatis-config.xsd文件

 看懂mybatis-config.dtd文件

 首先明白什么是dtd文件:

DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

说白了就是先定义一个规则,以后你写的(外部接受的)xml文件都必须符合这个规则。

学习dtd文件的相关知识可参考:DTD 教程 | 菜鸟教程

我们可以看到dtd文档的第一部分为:


如图:

configuration :表示定义的配置文件根节点是configuration

子节点包含:properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?

并且他们先后顺序也必须和定义的顺序一致

如:

maybatis源码分析(一)——看懂mybatis-config.dtd和mybatis-config.xsd文件_第1张图片

我们定义了如下的配置文件,

我们可以看到之前我们定义的dtd文件, databaseIdProvider节点在environments之后,如果我们现在将databaseIdProvider放在environments之前,我们的编译工具就会帮我们检测出错误,如图:

maybatis源码分析(一)——看懂mybatis-config.dtd和mybatis-config.xsd文件_第2张图片

解释: 

maybatis源码分析(一)——看懂mybatis-config.dtd和mybatis-config.xsd文件_第3张图片

?:表示该元素可以出现0次或多次

我们可以看到dtd文档的第二部分为:


 这段代码的意思就是:

databaseIdProvider节点有个type属性,而且是必填的,有多个property节点(*:表示有0个或者多个)

如图:

maybatis源码分析(一)——看懂mybatis-config.dtd和mybatis-config.xsd文件_第4张图片

 此时如果我们将dtd文件中的*去掉:

maybatis源码分析(一)——看懂mybatis-config.dtd和mybatis-config.xsd文件_第5张图片

该节点报错:

maybatis源码分析(一)——看懂mybatis-config.dtd和mybatis-config.xsd文件_第6张图片

property的节点定义为:(解释方法同上)


有了这个前置知识 我相信大家不仅能看懂:mybatis-3-config.dtd 、mybatis-3-mapper.dtd文件,其他的dtd文件都能看穿底裤。

#REQUIRED解释:

 maybatis源码分析(一)——看懂mybatis-config.dtd和mybatis-config.xsd文件_第7张图片

看懂mybatis的mybatis-config.xsd文件:

要看懂xsd文件先要知道XSD文件的相关知识:

XML Schema 可定义 XML 文件的元素。

简易元素指那些只包含文本的元素。它不会包含任何其他的元素或属性。

什么是简易元素?

简易元素指那些仅包含文本的元素。它不会包含任何其他的元素或属性。

不过,"仅包含文本"这个限定却很容易造成误解。文本有很多类型。它可以是 XML Schema 定义中包括的类型中的一种(布尔、字符串、数据等等),或者它也可以是您自行定义的定制类型。

您也可向数据类型添加限定(即 facets),以此来限制它的内容,或者您可以要求数据匹配某种特定的模式。

学习教程参考:XSD 简易元素 | 菜鸟教程

可以自己去研究一下xsd文件的教程,xsd比dtd更加强大,但他们在mybatis中的作用是一样的,所以此处不作详解

你可能感兴趣的:(mybatis源码分析,java,mybatis源码分析)