首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MathML DTD语法说明

MathML DTD语法说明
EN

Stack Overflow用户
提问于 2013-02-19 20:54:39
回答 2查看 139关注 0票数 1

我在读MathML DTD。我发现了一行代码。下面是这行代码。

代码语言:javascript
复制
<!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;]]>

我不能理解上面的两行。有人能解释一下它的语法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-02-20 00:58:54

这一行:

代码语言:javascript
复制
<!ENTITY % mathml-qname.module "INCLUDE">

是一个参数实体。(参数实体只能在DTD中使用。)实体的值是"INCLUDE“。

这一行:

代码语言:javascript
复制
<![%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之后,基本上是这样的:

代码语言:javascript
复制
<![INCLUDE [<!ENTITY % mathml-qname.mod PUBLIC "-//W3C//ENTITIES    MathML   3.0 Qualified Names 1.0//EN" "mathml3-qname.mod"> %mathml-qname.mod;]]>

这意味着将包括mathml-qname.mod声明和引用。如果在mathml-qname.module中将INCLUDE更改为IGNORE,则将忽略对mathml-qname.mod的声明和引用。

票数 1
EN

Stack Overflow用户

发布于 2013-02-20 01:01:26

第一行声明了一个名为mathml-qname.module的参数实体,其值为"INCLUDE“。

代码语言:javascript
复制
<!ENTITY % mathml-qname.module "INCLUDE">

下一步,我将分成几行。

代码语言:javascript
复制
<![%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;[ ... ]]>)是一个条件部分--也就是说,根据其关键字的值,可以正常读取和处理的部分,也可以跳过。关键字出现在两个左方括号之间--在这里,它由对参数实体mathml-qname.module的引用给出。如果展开参数实体引用,条件部分如下所示:

代码语言:javascript
复制
<![INCLUDE [
 ...
]]>

正如您可能猜到的,关键字INCLUDE的含义是:包含、读取和处理这个部分。(另一个可能的值是IGNORE。)

在标记的部分中有另一个参数实体声明,用于名为mathml-qname.mod的参数实体。PUBLIC关键字为实体提供了公共标识符和系统标识符;简而言之,所讨论的实体是MathML 3.0限定名的实体集合,它位于其相对URI (相对于包含此参数实体声明的资源)为mathml3-qname.mod的资源中。

mathml-qname.mod的参数实体声明之后,有一个对相同参数实体(%mathml-qname.mod;)的引用,这会导致读取和处理该实体。

非正式术语:这段代码指定在缺省情况下,应该咨询外部资源mathml3-qname.mod。但用户可以通过在其配置中的适当位置包含以下形式的参数实体声明来覆盖该默认值:

代码语言:javascript
复制
<!ENTITY % mathml-qname.module "IGNORE">

如果您对MathML 3.0的限定名称实体有一组不同的声明,您可能会这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14958040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档