XML文档类型声明
更新时间:2023-07-06
XML文档类型声明是XML文档的一部分,它用于表明文档的根元素和属性的类型。XML文档类型声明通常位于文档的开头,被放置在文档的第一行或前两行,并由“<?xml”开始。XML文档类型声明一般包含DTD声明或者XSD声明,用于定义文档的元素、属性、实体和约束等。
DTD声明
DTD是一种描述XML文档的语法规范,它包含了可以在文档中使用的所有元素和属性以及它们之间的关系。一个DTD声明通常包含在XML文档类型声明中的DOCTYPE语句中。
<!DOCTYPE 根元素名称 SYSTEM “DTD文件的URL或文件名”>
其中根元素名称是指文档所有元素的入口点,通常是顶层元素。DTD文件的URL或文件名指定文档在本地或远程位置的DTD文件。
XSD声明
XSD也是一种描述XML文档结构的语法规范,它提供了比DTD更丰富的功能,可以描述数据类型、命名空间、约束和继承等。一个XSD声明通常包含在XML文档类型声明中的schemaLocation属性中。
<根元素名称 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="XSD文件的URL或文件名">
其中根元素名称同样指文档的顶层元素。xmlns:xsi命名空间表示XSI实例命名空间,指定一个默认的命名空间。xsi:noNamespaceSchemaLocation属性指定了XSD文件的位置。
混合声明
有时候,一个XML文档可能同时使用DTD和XSD声明两种模式。这种情况下,文档类型声明可以同时包含DOCTYPE和schemaLocation属性。
<!DOCTYPE 根元素名称 SYSTEM “DTD文件的URL或文件名”> <根元素名称 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="XSD文件的URL或文件名">
在这种混合声明的情况下,DTD文件的优先级更高。如果同一元素在DTD和XSD声明中同时存在,DTD中的优先级更高。
无声明
虽然在XML文档中声明文档类型是最佳的实践,但是有时候我们可以不声明文档类型。这种情况下,文档可以包含任意数量和结构的元素和属性,甚至可以没有根元素。
<元素1> <元素2>...</元素2> ... </元素1> ...
在解析这种无声明类型的文档时,解析器将会尽力处理其中的内容。但是这种文档不利于可靠的处理和传输数据。