dtd解读

学习mybatis时发现配置文件表头含有

<!DOCTYPE 根元素 PUBLIC 应用DTD文件版本 DTD文件下载地址>

DTD为英文Document Type Definition,中文意思为“文档类型定义”。

一个DTD文档包含:元素的定义规则、元素间关系的定义规则、元素可使用的属性、可使用的实体或符号规则。

DTD肩负着两重任务:

1.帮助你编写合法的代码

2.让浏览器正确地显示其代码

 

在配置文件中主要作用为第一个帮助你编写合法的代码。

ibatis-3-config.dtd内容大致如下

<?xml version="1.0" encoding="UTF-8" ?>

<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, plugins?, environments?, mappers?)>

<!ELEMENT properties (property*)>
<!ATTLIST properties
resource CDATA #IMPLIED
url CDATA #IMPLIED
>

<!ELEMENT property EMPTY>
<!ATTLIST property
name CDATA #REQUIRED
value CDATA #REQUIRED
>

<!ELEMENT settings (setting+)>

<!ELEMENT setting EMPTY>
<!ATTLIST setting
name CDATA #REQUIRED
value CDATA #REQUIRED
>

<!ELEMENT typeAliases (typeAlias+)>

<!ELEMENT typeAlias EMPTY>
<!ATTLIST typeAlias
type CDATA #REQUIRED
alias CDATA #IMPLIED
>

<!ELEMENT typeHandlers (typeHandler+)>

<!ELEMENT typeHandler EMPTY>
<!ATTLIST typeHandler
javaType CDATA #REQUIRED
jdbcType CDATA #IMPLIED
handler CDATA #REQUIRED
>

<!ELEMENT objectFactory (property*)>
<!ATTLIST objectFactory
type CDATA #REQUIRED
>

<!ELEMENT plugins (plugin+)>

<!ELEMENT plugin (property*)>
<!ATTLIST plugin
interceptor CDATA #REQUIRED
>

<!ELEMENT environments (environment+)>
<!ATTLIST environments
default CDATA #REQUIRED
>

<!ELEMENT environment (transactionManager,dataSource)>
<!ATTLIST environment
id CDATA #REQUIRED
>

<!ELEMENT transactionManager (property*)>
<!ATTLIST transactionManager
type CDATA #REQUIRED
>

<!ELEMENT dataSource (property*)>
<!ATTLIST dataSource
type CDATA #REQUIRED
>

<!ELEMENT mappers (mapper+)>

<!ELEMENT mapper EMPTY>
<!ATTLIST mapper
resource CDATA #IMPLIED
url CDATA #IMPLIED
>

代码解读

现对configuration、properties进行解读,其他元素大同小异。

1.configuration 定义

<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, plugins?, environments?, mappers?)>

表示元素configuration 可以包含properties, settings, typeAliases等子元素,并且只能含有最多一个种子元素。

2.properties 定义

<!ELEMENT properties (property*)>
<!ATTLIST properties
resource CDATA #IMPLIED
url CDATA #IMPLIED
>

表示properties可以含有0到多个子元素,properties元素含有resource属性为字符类型(CDATA)非必须属性(#IMPLIED)

3.属性类型及属性值

属性类型:

类型描述
CDATA值为字符数据 (character data)
(en1|en2|..)此值是枚举列表中的一个值
ID值为唯一的 id
IDREF值为另外一个元素的 id
IDREFS值为其他 id 的列表
NMTOKEN值为合法的 XML 名称
NMTOKENS值为合法的 XML 名称的列表
ENTITY值是一个实体
ENTITIES值是一个实体列表
NOTATION此值是符号的名称
xml:值是一个预定义的 XML 值

属性值:

解释语法
属性的默认值

<!ATTLIST 元素名称 属性名称 属性类型  "value">

#REQUIRED属性值是必需的

<!ATTLIST 元素名称 属性名称 属性类型 #REQUIRED>

#IMPLIED属性不是必需的

<!ATTLIST 元素名称 属性名称 属性类型 #IMPLIED>

#FIXED value属性值是固定的

<!ATTLIST 元素名称 属性名称 属性类型 #FIXED "value">

修饰符:

符号用途示例说明
()元素分组

<!ELEMENT configuration (properties?, settings?)>

 
|列出对象中选择一个

 <!ELEMENT configuration (properties|settings)>

 
+该对象至少出现一次
<!ELEMENT settings (setting+)>
settings元素中至少含有一个setting元素
*该对象出现0到n此
<!ELEMENT objectFactory (property*)>
objectFactory元素中property元素可以有0到n个
该对象不出现或出现一次
<!ELEMENT configuration (properties?)>
configuration元素中properties元素可以有0或1个
对象必须按指定顺序出现
<!ELEMENT configuration (properties?, settings?)>
configuration元素中properties和settings依次出现

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值