2.2. 关于实体定义

如果想要输入一些特殊字符的话,那么可以考虑使用实体(Entity)定义。

比如:

  • ⇒来表示双等号右箭头:⇒
  • ™来表示trademark商标:™
  • ↔来表示单横线双向箭头:

而对这类特殊字符,之前是通关使用自己单独定义的crl.ent文件而实现的。其包含如下内容:


<?xml version="1.0" encoding="UTF-8"?>

<!-- more can refer: http://barzilai.org/math_sym.htm -->
<!ENTITY larr   "&#x2190;"> <!-- ← -->
<!ENTITY rarr   "&#x2192;"> <!-- → -->
<!ENTITY darr   "&#x2193;"> <!-- ↓ -->
<!ENTITY uarr   "&#x2191;"> <!-- ↑ -->
<!ENTITY harr   "&#x2194;"> <!-- <-> -->
<!ENTITY crar   "&#x21B5;"> <!-- <_| -->
<!ENTITY lArr   "&#x21D0;"> <!-- <= -->
<!ENTITY uArr   "&#x21D1;"> <!-- /||\ -->
<!ENTITY rArr   "&#x21D2;"> <!-- => -->
<!ENTITY dArr   "&#x21D3;"> <!-- \||/ -->
<!ENTITY hArr   "&#x21D4;"> <!-- <=> -->


        

但是实际上,对于这些字符,官网已经有了标准的定义了。

然后在参考了http://docbook.org/docs/howto/#faq-authoring-general-entities,得知如下地址中有全部的定义:

http://www.w3.org/2003/entities/2007/w3centities-f.ent

对应的,http://www.w3.org/2003/entities/2007/中,也有其他相关的ent文件。

其中,也可以看到那个很常见的,包含了全部定义的文件:http://www.w3.org/2003/entities/2007/w3centities.ent

更多关于实体定义的解释,可以去看:XML Entity Declarations for Characters

而知道了有这么好的资源,就可以直接利用了,即,将上面的那个文件,改成:


<?xml version="1.0" encoding="UTF-8"?>

<!-- refer: http://docbook.org/docs/howto/#faq-authoring-general-entities -->
<!ENTITY % allent SYSTEM "http://www.w3.org/2003/entities/2007/w3centities-f.ent">
%allent;


        

即可包含了全部的各种特殊字符的定义了,这样也就可以随处引用这些特殊字符了。

当然对于上述文件,每次都是需要联网下载w3centities-f.ent的,所以,为了不依赖网络和加快速度,可以下载w3centities-f.ent到本地,放在和crl.ent同文件夹下,然后crl.ent就可以再改为这样既可:


<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % allent SYSTEM "w3centities-f.ent">
%allent;