新手学习mybatis编写实体映射文件时,eclipse或者STS或者其他会显示红叉叉,将鼠标放在红叉叉上会得到这样的一串提示."The content of element type "mapper" must match "EMPTY". Children of type "comment" are not allowed."
这是因为定义实体映射xml文件的文档类型里面的属性不对的缘故。
如果是这样写的:<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">没有网络时,mybatis-3-mapper.dtd加载不到,所以下面定义的元素标签就会报红叉叉。
改成这样就好了<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Configuration 3.0//EN" "mybatis-3-mapper.dtd" >
可能有很多人对xml文件定义<!DOCTYPE这一串东西是什么意思不太了解。我也来说说我的理解,不正之处请大神斧正
<!DOCTYPE 后面跟的是是校验该XML的DTD所在的位置
什么是DTD呢?DTD全称是文档类型定义,它是xml文件格式校验的一种。
xml可以自定义标签,所以每个人写的标签可能不一样,这样的话别人要是使用怎么会知道哪个标签怎么用呢?代表什么意思呢?DTD可以解决这个问题。
dtd是一种保证xml文档格式正确的方法,它可以比较xml文档和dtd文件,从而查看文档是否符合规范,元素和标签是否使用正确。
dtd文档包含:元素定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符合规则。
dtd的分类:内部dtd和外部dtd。内部顾名思义包含在xml文档中,外部dtd则通过url引用。