一、概述:
DTD声明始终以!DOCTYPE开头,空一格后跟着文档根元素的名称。
如果是内部DTD(私有DTD),则再空一格出现[],在中括号中是文档类型定义的内容.
而对于外部DTD,则又分为私有DTD与公共DTD,
私有DTD使用SYSTEM表示,接着是外部DTD的URL.
公共DTD则使用PUBLIC,接着是DTD公共名称,接着是DTD的URL.
如下所示是公共DTD示例。
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
在上面的声明中,声明了文档的根元素是 configuration,它在公共标识符被定义为 “-//mybatis.org//DTD Config 3.0//EN” 的 DTD 中进行了定义。XML解析器将明白如何寻找匹配此公共标识符的 DTD。如果找不到,XML解析器将使用公共标识符后面的 URL 作为寻找 DTD 的位置。
二、外部DTD之公共DTD
公共DTD,DTD名称格式为"注册//组织//类型 标签//语言",
"注册"指示组织是否由国际标准化组织(ISO)注册,+表示是,-表示不是.
"组织"即组织名称,如:W3C;
"类型"一般是DTD,
"标签"是指定公开文本描述,即对所引用的公开文本的唯一描述性名称,后面可附带版本号。
最后"语言"是DTD语言的ISO 639语言标识符,如:EN表示英文,ZH表示中文,在下面的地址有完整的ISO 639语言标识。
ISSO 639语言标识
举例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd">
表明根元素为html标签,为公共DTD,非注册,w3c组织,类型为DTD,标签为transitional,语言为英语。
三、外部DTD之私有DTD
<!DOCTYPE root SYSTEM "http://www.test.org/test.dtd" >
四、内部DTD
<!DOCTYPE rootElement [
declarations
]>
五、内部DTD和外部DTD可以混合使用
<!DOCTYPE rootElement SYSTEM "URIreference" [
declarations
]>
或者
<!DOCTYPE rootElement PUBLIC "PublicIdentifier" "URIreference" [
declarations
]>