这里只写了常用的,如果需要更多可以参阅
每个字都是本人手敲的,若需转载请注明出处
文档类型定义(Document Type Definition)
一般的xml文件都有对应的.dtd文件,来定义和规范它的标签。也就是说,.dtd文件就像是API文档一样。读懂它,就能自己写一个规范的xml
以Mybatis
的select标签为例,文件位置在mybatis
的jar包里的org,apache.ibatis.builder.xml
里面的mybatis-3-mapper.dtd
(这里中间的3是版本号)
ELEMENT 标签的组成元素
()
代表当前里面能写哪些内容
|
枚举
A,
B 一定按先A后B顺序
*
数量 0 ~ n
+
数量 1 ~ n
?
数量 0或1
#PCDATA
文本
EMPTY
空标签,只能自闭如<a/>或<a></a>紧挨无空格
<!-- select标签不一定有子标签[由()*看出],这些子标签没有顺序[没有`,`],标签内可以直接写文本即sql语句 -->
<!ELEMENT select (#PCDATA | include | trim | where | set | foreach | choose | if | bind)*>
ATTLIST 标签的属性集合
attitude list的缩写。
CDATA
不含空格的字符串
NMTOKEN
可以有空格的字符串
#IMPLIED
可选择的,但如果标签内属性都是可选的,就必须选一个
#REQUIRED
必要的,不可省的
#FIXED
value 值是固定的
<!ATTLIST select
<!-- 不可省的属性只有id,id的值中间不能有空格 -->
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
parameterType CDATA #IMPLIED
resultMap CDATA #IMPLIED
resultType CDATA #IMPLIED
<!-- `()`列举属性可以为什么值 -->
resultSetType (FORWARD_ONLY | SCROLL_INSENSITIVE | SCROLL_SENSITIVE) #IMPLIED
statementType (STATEMENT|PREPARED|CALLABLE) #IMPLIED
fetchSize CDATA #IMPLIED
timeout CDATA #IMPLIED
flushCache (true|false) #IMPLIED
useCache (true|false) #IMPLIED
databaseId CDATA #IMPLIED
lang CDATA #IMPLIED
resultOrdered (true|false) #IMPLIED
resultSets CDATA #IMPLIED
>