1. 内部实体(Internal Entity):
内部实体是在 DTD 内部定义的,以 <!ENTITY entity_name "entity_value"> 的形式出现。
<!DOCTYPE book [
<!ENTITY author_name "John Doe">
]>
<book>
<author>&author_name;</author>
</book>
在上述例子中,author_name 是一个内部实体,它的值是 "John Doe"。在 <book> 元素中,通过 &author_name; 引用了这个实体,最终展开为 "John Doe"。
2. 外部实体(External Entity):
外部实体是在 DTD 外部定义的,可以包含在 XML 文档中,以 <!ENTITY entity_name SYSTEM "external_entity_uri"> 的形式出现。
<!DOCTYPE book [
<!ENTITY author SYSTEM "author.txt">
]>
<book>
<author>&author;</author>
</book>
在上述例子中,author 是一个外部实体,它的值来自位于 "author.txt" 文件中的内容。通过 &author; 引用这个实体,实现了在 XML 文档中引入外部内容的目的。
3. 参数实体(Parameter Entity):
参数实体是一种在 DTD 中定义可重用部分的机制,以 % 开头,可以用于简化 DTD 的结构。
<!DOCTYPE library [
<!ENTITY % bookElements "(title, author, price)">
<!ELEMENT book %bookElements;>
]>
<library>
<book>
<title>Introduction to XML</title>
<author>John Doe</author>
<price>29.99</price>
</book>
</library>
在上述例子中,bookElements 是一个参数实体,包含了一组通用的元素声明,然后在 <!ELEMENT book ...> 中使用了这个参数实体。
4. 使用实体的注意事项:
- 实体可以包含文本、其他实体,或者混合内容。
- 使用实体可以提高文档的可读性和维护性,同时实现了内容的重用。
- 实体引用需要用 &entity_name; 的形式,而且在 XML 文档中引用实体时,需要遵循实体的定义。
5. 实体引用的一些内置实体:
- <: 小于号 <
- >: 大于号 >
- &: 与号 &
- ": 双引号 "
- ': 单引号 '
这些内置实体用于在 XML 文档中表示特殊字符,以避免与 XML 语法冲突。
总体而言,DTD 中的实体提供了一种有效的机制,使得 XML 文档更加模块化、可读性更强,同时通过引入外部实体,也支持文档内容的重用。
转载请注明出处:http://www.zyzy.cn/article/detail/12196/XML