1.我们知道xml文档由xml标记语言进行编写,可以自定义标签以及属性
而dtd文档的存在则是去约束这个自定义的范围,让其趋近于某个规则
2.dtd文档可以写在xml文档的开头,这样的dtd文档被成为内部声明
当然也可以通过dtd的语法引用外部dtd文档的内容,这种dtd文档的嵌入
方法称为外部声明
dtd文档可以对元素进行定义,这个定义很强大,它可以定义元素的数据类型
(根据不同的数据类型有不同的解读规则,这个日后细讲)
定义包含的子元素,定义元素出现的次数。
此外dtd文档还可以定义属性,定义属性的默认值,属性的数据类型
3.dtd文档不只是用来约束xml文档,更是对自身格式的一种描述,通过比对文档
格式可以判断数据是否符合规定,同时还可以通过dtd文档对自身的数据进行
检验
接下来要进行描述的是实体,实体就是代表,就是变量,是快捷引用一段内容
,快捷引用一段文本的一种方式,比如<!ENTITY qq"<">,那么qq就是<的实体
在文章中出现了&qq;就会自动替换为<,并且使用这种方式表达<等特殊符号是
有好处的,那就是不会产生歧义,使用这种方式表达的特殊符号只保留长相,失去
其特殊含义,不会被计算机或程序识别。
还有就是刚刚举的那个例子是内部实体声明,接下来要讲的是外部实体声明,外部
实体声明的格式为<!ENTITY qq system"uri/url">会将url所代表的内容赋值给实体qq
这会导致一定的安全隐患,如果此处的url可控的话,就可以用来读取系统文件,这就是
xxe注入漏洞的由来