在 XML DTD(Document Type Definition)中,实体用于定义可重用的文本片段,以便在文档中引用。实体可以包含字符、字符串或者其他实体,有助于提高 XML 文档的可读性、可维护性和可重用性。以下是关于 DTD 实体的基本概念和语法:

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. 实体引用的一些内置实体:

  •  &lt;: 小于号 <

  •  &gt;: 大于号 >

  •  &amp;: 与号 &

  •  &quot;: 双引号 "

  •  &apos;: 单引号 '


这些内置实体用于在 XML 文档中表示特殊字符,以避免与 XML 语法冲突。

总体而言,DTD 中的实体提供了一种有效的机制,使得 XML 文档更加模块化、可读性更强,同时通过引入外部实体,也支持文档内容的重用。


转载请注明出处:http://www.zyzy.cn/article/detail/12196/XML