所有 MIME 类型信息都存储在数据库中。MIME 数据库位于目录 /usr/share/mime/ 中。MIME 数据库包含大量公用 MIME 类型,存储在文件 /usr/share/mime/packages/freedesktop.org.xml 中。应用程序可把新 MIME 类型添加到 MIME 数据库。
应用程序通过下列方式,使用 MIME 数据库检测文件的 MIME 类型:
应用程序检查文件的内容,然后使用 MIME 数据库标识相应的 MIME 类型。MIME 数据库包含文件内容探测指令 (file content sniffer) 信息。文件内容探测指令信息提供文件中特定样式的详细信息。MIME 数据库将此样式与一种 MIME 类型相关联。应用程序检查文件的样式。如果应用程序在文件内容中找到了与该样式的匹配,则该文件的 MIME 类型就是与该样式相关联的 MIME 类型。
MIME 数据库中的 magic 元素指定文件内容探测指令信息。
应用程序检查文件名,然后使用 MIME 数据库标识相应的 MIME 类型。MIME 数据库将特定的文件扩展名和文件名样式与特定的 MIME 类型相关联。应用程序检查文件名,在其中搜索特定的样式。如果找到了与该文件名相匹配的项,则该文件的 MIME 类型就是与该扩展名或样式相关联的 MIME 类型。
MIME 数据库中的 glob 元素指定文件名样式和文件扩展名样式信息。
MIME 数据库还包含每个 MIME 类型的文本描述。MIME 数据库还可以包含可用于查看或编辑 MIME 类型的应用程序列表。
以下是 MIME 类型数据库的样例:
<mime-type type="image/png"> <comment>PNG image</comment> <comment xml:lang="de">PNG-Grafik</comment> : : : <magic priority="50"> <match offset="0" type="string" value="\x89PNG" /> </magic> <glob pattern="*.png" /> </mime-type>
表 5–1 描述 MIME 类型数据库中的元素。
表 5–1 MIME 类型数据库元素
元素 |
说明 |
---|---|
mime-info |
这是文档元素,也是 MIME 数据库中最高级别的元素。此元素包含所有 MIME 类型的必需信息。此元素的名称空间 URI 如下: http://www.freedesktop.org/standards/shared-mime-info |
mime-type |
描述一个 MIME 类型。此元素有一个 type 属性,它指定 MIME 类型。 |
comment |
提供在用户界面中使用的 MIME 类型描述。这些描述可在文件管理器和其他应用程序中显示。 数据库可能包含带 xml:lang 属性的 comment 元素。这些元素可以提供用其他语言写成的描述性文本。 |
magic |
包含 match 元素。match 元素指定要在文件内容中搜索的特定样式。 这会把文件中的特定样式与 mime-type 元素中指定的 MIME 类型相关联。如果应用程序找到了与该样式的匹配,则该文件的 MIME 类型就是与该样式相关联的 MIME 类型。 magic 元素包含 priority 属性。您可以为样式指定优先值。如果在 MIME 数据库的 magic 元素中有等同的样式,则有较高优先值的元素优先。 有关 match 元素的属性的更多信息,参见Match 元素中的属性。 |
glob |
指定要与 MIME 类型匹配的文件名样式。任何匹配此文件名样式的文件都属于此 MIME 类型。 |
root-XML |
如果文件被标识为 XML 文件,您可以使文件与比 text/xml 更特定的 MIME 类型关联。要这样做,可以对 root-XML 元素的下列属性赋值:
此元素是可选的。示例中没有此元素。 |
表 5–2 描述 match 元素中的属性。
表 5–2 match 元素中的属性
当安装了新的 MIME 类型时,会执行 update-mime-database 命令以更新 MIME 数据库。表 5–3 描述 update-mime-database 命令生成的文件:
表 5–3 update-mime-database 生成的文件
文件 |
说明 |
---|---|
globs |
globs 文件从 MIME 数据库中的 glob 元素,以及 packages 目录中任何 MIME 类型描述文件中的 glob 元素生成。globs 文件包含 MIME 类型的简单列表,以及与该文件类型关联的文件名样式。 以下是 globs 文件中条目的示例: application/x-bzip-compressed-tar:*.tar.bz2 text/html:*.html image/png:*.png 如果在 MIME 数据库中的 glob 元素中有两个等同的文件名样式,则仅将按字母顺序排列较后的 MIME 类型描述文件中的条目添加到 globs 文件。例如,如果 MIME 类型描述文件 abc.xml 和 def.xml 在 glob 元素中包含等同的文件名样式,则仅将来自 def.xml 的 glob 元素添加到 globs 文件。也就是说,按字母顺序排列较后的 MIME 类型描述文件中的文件名样式优先。 如果您希望一个 MIME 类型描述不论其字母顺序如何,都优先于其他 MIME 类型描述,则应将其放到 packages 目录中名为 Override.xml 的文件中。 |
magic |
magic 文件从 MIME 数据库中的 magic 元素,以及 packages 目录中任何 MIME 类型描述文件中的 magic 元素生成。magic 文件使用二进制格式存储。 |
XMLnamespaces |
magic 文件从 MIME 数据库中的 root-XML 元素生成。此文件列出 XML 文件类型使用的所有 XML 名称空间。 |
content-type/ content-subtype.xml |
这些文件从 MIME 数据库中的 comment 元素生成。 |