当天sojson给大家引见一下XML外部实体和外部实体,会给大家带来示例和留意事项。宿愿此篇文章能给你带来协助。
XML外部实体
外部实体是在 DTD 中本地定义的实体。外部实体的基本目标是防止一次性又一次性地输入相反的内容(例如组织的称号)。相反,咱们可以定义一个外部实体来蕴含文本,而后您只有在要拔出文本的位置经常使用该实体即可。由于实体是由解析器裁减的,因此您可以安心,您将在每个位置取得相反的文本。假设您拼错实体称号,解析器也会捕捉。
要经常使用实体,请在文档中拔出“实体援用”。您或者曾经相熟一些实体援用,由于您须要将它们用于无法直接在 XML 文档中键入的不凡字符,例如“<”和“&”。实体援用是一个与号 (&),后跟实体称号,而后是分号 (;)。
假设您已定义实体“compname”来蕴含您公司的称号,则可以将其与以下实体援用“&compname;”一同经常使用。
由实体援用拔出的文本称为“交流文本”。外部实体的交流文本可以蕴含标志(元素、属性、处置指令、其余实体援用等),但内容必定平衡(在实体中开局的任何元素必定在同一实体中完结)和循环不准许实体援用。
实体申明
实体在经常使用之前必定先申明。它们可以在 DTD 中申明(假设您的 XML 解析器处置 DTD(也称为外部子集)或外部子集)。留意:假设同一实体申明屡次,则仅实用第一个申明,而外部子集是在外部子集之前处置。
一实际体均经常使用“ENTITY”申明启动申明。申明确实切格局区格外部实体、外部实体和参数实体。
申明外部实体
外部实体申明具备以下方式:
您可以经常使用双引号或单引号来分隔交流文本。前面提到的 yoyo 的申明是:
预约义的外部实体
外部实体中预约义了五个外部实体。一切 xml 处置器都须要支持对这些实体的援用,即使它们没有申明。
这是一个蕴含预约义实体及其交流文本的表
实体称号 | 交流文本 |
---|---|
The less than sign (<) | |
The greater than sign (>) | |
The ampersand (&) | |
The single quote or apostrophe (') | |
The double quote (") |
外部实体
外部实体提供了一种将文档划分为逻辑块的机制。例如,您可以将每个章节存储在独自的文件中,并经常使用外部实体“失掉”这 10 章,而不是编写一个全体文档(例如一本蕴含 10 章的书)。
由于不同文档中的外部实体可以援用文件系统上的相反文件,因此外部实体提供了成功重用的时机。小型分立组件(图形、非法样板、正告信息)的重用相当容易治理。大规模地成功重用须要一个实体治理系统,而 XML 自身并不提供这种系统。
对于外部实体的一些留意事项
外部实体不用由单个元素组成;您可以将三个段落组成的序列甚至一堆带有嵌入内联标志的字符数据放入外部实体中。但外部实体中的标签必定坚持良好平衡(您不能在实体中开局标签并在文档或另一个实体中完结标签)。
外部实体可以援用外部或其余外部实体,但不能有循环援用。
您可以在单个文档中屡次援用同一外部实体。但请留意,假设您这样做,并且担忧有效性,则必定防止在外部实体中经常使用 ID 属性。经常使用在文档中多个位置蕴含 ID 的外部实体将生成具备多个重复 ID 的文档,这是一种有效性失误。
领有多个援用同一外部文件的外部实体是非法的。
对外部实体经常使用的字符编码没有附加限度。特意是,可以在同一文档中使用具备不同编码的外部实体。
申明外部实体
外部实体申明有两种方式。假设外部实体蕴含 XML 文本,则申明具备以下方式:
系统标识符必定经过URI(最经常出现的是繁难的文件名)指向资源的实例。公共标识符(假设提供)可以由 XML 系统用来生成备用 URI(这在支持公共标识符的系统上提供了繁难的直接级别)。
虽然以 XML 存储一切内容的趋向始终增长,但仍有一些遗留系统依然以非 XML 格局存储数据。图形有时以奇异的格局存储,例如 PNG 和 GIF;-)。
援用这些文件的外部实体必定申明它们蕴含的数据不是 XML。他们经过用符号批示外部实体的格局来成功这一点:
假设本文对你有协助,那么请你资助我,让我更有热情的写下去,协助更多的人。