外部解析的实体

XML 片段(也称为外部解析实体的名称) 可以存储在单独的文件中。

与 XML 文档不同,XML 片段的限制性较小,因为几个元素可以显示为顶级元素,也可以显示为文本节点。与 XML 文档一样,外部解析的实体可以以 XML 声明开头,但此声明不被视为其替换文本的一部分。

这是外部解析实体的示例:

<?xml version="1.0" encoding="UTF-8"?>
This is some text
<element/>
<element/>

然后可以在 DTD 中的 XML 文档中声明外部解析的实体,并且它可以与实体引用一起使用,该实体引用具有与一般内部实体相同的语法:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY fragment SYSTEM "fragment.xml">
]>
<root>
    &fragment;
</root>

解析实体引用后,此文档等效于:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY fragment SYSTEM "fragment.xml">
]>
<root>
  This is some text
  <element/>
  <element/>
</root>

外部解析实体中的每个开放元素标记都必须具有相应的结束标记:不允许在多个实体上传播单个元素,也不允许传播标记。

需要验证解析器来解析实体引用,并将其替换文本包含在文档中,如上所述。非验证解析器可以跳过此,而是告诉消费应用程序存在对外部解析实体的未解析引用。