第一行声明了一个名为mathml-qname.module
“ INCLUDE
”的参数实体。
<!ENTITY % mathml-qname.module "INCLUDE">
下一点我将分成几行。
<![%mathml-qname.module; [
<!ENTITY % mathml-qname.mod PUBLIC
"-//W3C//ENTITIES MathML 3.0 Qualified Names 1.0//EN"
"mathml3-qname.mod">
%mathml-qname.mod;
]]>
第一行和最后一行 ( <![%mathml-qname.module;[
... ]]>
) 是条件部分 - 即可以正常读取和处理或跳过的部分,具体取决于其关键字的值。关键字出现在两个左方括号之间——在这里,它是由对参数 entity 的引用给出的mathml-qname.module
。如果我们展开参数实体引用,条件部分如下所示:
<![INCLUDE [
...
]]>
正如您可能猜到的那样,关键字的含义INCLUDE
是:包含、阅读和处理本节。(另一个可能的值是IGNORE
。)
在标记部分中还有另一个参数实体声明,用于名为 的参数实体mathml-qname.mod
。PUBLIC
关键字给出了实体的公共标识符和系统标识符;长话短说,有问题的实体是 MathML 3.0 限定名称的实体集合,它位于相对 URI(相对于包含此参数实体声明的资源)为mathml3-qname.mod
.
在 的参数实体声明之后mathml-qname.mod
,有对相同参数实体 ( %mathml-qname.mod;
) 的引用,这会导致实体被读取和处理。
用非正式的术语:这段代码指定默认情况下,mathml3-qname.mod
应该咨询外部资源。但是用户可以通过在其配置中的适当位置包含以下形式的参数实体声明来覆盖该默认值:
<!ENTITY % mathml-qname.module "IGNORE">
如果您对 MathML 3.0 的限定名称实体有一组不同的声明,您可能会这样做。