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>
外部解析实体中的每个开始元素标签都必须具有一个相应的结束标签:不允许将单个元素分布在多个实体上,也不能扩展标记。
需要一个验证解析器来解析实体引用,并将其替换文本包含在上述文档中。非验证解析器可以跳过此操作,而是告诉使用方的应用程序存在对外部解析实体的未解析引用。