XML独立文档声明

独立文档声明通过standalone属性指明XML是否依赖外部DTD:设为yes时文档不依赖外部DTD,所有声明需内嵌;设为no时可引用外部DTD。若standalone="yes"但引用外部实体(如DOCTYPE引用note.dtd且使用其中定义的实体),则解析出错;反之未使用外部资源时建议设为yes以提升效率和自包含性。

XML独立文档声明用于指示XML文档是否依赖于外部资源,比如外部DTD(文档类型定义)。它出现在XML声明之后、文档根元素之前,语法为 standalone 属性。

基本语法

完整的XML声明包含 version、encoding 和 standalone 三个部分,其中 standalone 是可选的:

standalone 的取值含义

  • standalone="yes":表示该文档是“独立”的,不依赖任何外部DTD中的声明。所有必要的标记声明都包含在文档内部的DTD子集中。
  • standalone="no":表示文档不是独立的,可能引用外部DTD中的实体或属性声明,解析器需要加载外部资源来完整理解文档结构。

使用场景与注意事项

当设置了 standalone="yes",但文档又引用了外部DTD中定义的实体,则可能导致解析错误,因为解析器不会去读取外部文件。

例如:




&important;

如果 &important; 是在 note.dtd 中定义的实体,那么这个文档设置 standalone="yes" 就是非法的,会引发解析错误。

相反,若文档未使用任何外部定义的内容,推荐使用 standalone="yes",有助于提升解析效率并增强文档自包含性。

基本上就这些。合理使用独立文档声明,有助于明确文档结构和依赖关系。