MIME タイプの情報は、データベースに格納されます。MIME データベースは、/usr/share/mime/ にあります。MIME データベースには多数の MIME タイプが含まれ、それらの MIME タイプは /usr/share/mime/packages/freedesktop.org.xml ファイルに格納されます。アプリケーションは、新しい MIME タイプを MIME データベースに追加できます。
アプリケーションは、MIME データベースを使用して、次の方法でファイルの MIME タイプを検出します。
アプリケーションが、ファイルの内容を確認した後、MIME データベースを使用して該当する MIME タイプを特定します。MIME データベースには、ファイルタイプ判別パターン情報が含まれています。ファイルタイプ判別パターン情報には、ファイル内の特定のパターンの詳細が含まれています。MIME データベースは、このパターンを MIME タイプに関連付けます。アプリケーションは、ファイルのパターンを調べます。アプリケーションがファイルの内容がそのパターンと一致していることを見つけると、そのパターンに関連付けられている MIME タイプがファイルの MIME タイプになります。
MIME データベースの magic 要素によって、ファイルタイプ判別パターン情報が指定されます。
アプリケーションが、ファイル名を確認した後、MIME データベースを使用して該当する MIME タイプを識別します。MIME データベースは、特定のファイル拡張子とファイル名パターンを特定の MIME タイプに関連付けます。アプリケーションは、ファイル名を調べて、ファイル名の特定のパターンを検索します。ファイル名との一致が見つかると、その拡張子またはパターンに関連付けられている MIME タイプが、ファイルの MIME タイプになります。
MIME データベースの glob 要素によって、ファイル名のパターンとファイル拡張子のパターンの情報が指定されます。
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 |
1 つの 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 タイプがインストールされると、MIME データベースを更新するために update-mime-database コマンドが実行されます。表 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 要素に 2 つの同一ファイル名パターンがある場合、アルファベット順で後に来る MIME タイプ記述ファイルのエントリだけが globs ファイルに追加されます。たとえば、MIME タイプ記述ファイル abc.xml および def.xml で glob 要素に同一のファイル名パターンが含まれる場合、def.xml の glob 要素だけが globs ファイルに追加されます。つまり、アルファベット順で後に来る MIME タイプ記述ファイルのファイル名パターンが優先されます。 アルファベット順にかかわらず、ある MIME タイプ記述がほかの MIME タイプ記述より優先されるようにしたい場合は、packages ディレクトリにあるOverride.xml というファイルに MIME タイプ記述を配置します。 |
magic |
magic ファイルは、MIME データベースの magic 要素、および packages ディレクトリにある MIME タイプ記述ファイルの magic 要素から生成されます。magic ファイルは、2 進数形式で格納されます。 |
XMLnamespaces |
magic ファイルは、MIME データベースの root-XML 要素から生成されます。このファイルは、XML ファイルタイプが使用する XML ネームスペースをすべて一覧表示します。 |
content-type/content-subtype.xml |
これらのファイルは、MIME データベースの comment 要素から生成されます。 |