Zdrojové soubory XML

Tyto soubor XML, nacházející se ve složce <MIME>/packages, poskytují informace ohledně typů MIME, které se instalují pomocí aplikace update-mime-database do databáze. Zde je pro tyto soubory XML několik pravidel:

  • Musí uvádět jmenný prostor http://www.freedesktop.org/standards/shared-mime-info
  • Kořenový element musí být mime-info
  • V elementu mime-info může být uvedený žádný nebo více elementů mime-type. Atribut type se používá k určení typu MIME, který se definuje.

Standardně je soubor freedesktop.org.xml nainstalovaný ve složce packages v jedné z cest <MIME> (obvykle /usr/share/mime/packages).

Tabulka 5-1 podává stručný popis pro každý element, který se může vyskytnout jako potomek elementu mime-type.

Tabulka 5-1Dceřiné elementy <mime-type>
Element (a atributy) Popis
<glob pattern="*.xyz"> Tento element určuje hromadnou masku pro názvy souborů. Pokud název souboru odpovídá, je mu přiřazen typ MIME rodičovského elementu mime-type. Atribut pattern je povinný.
<magic priority="50"> Tento element v sobě obsahuje seznam elementů match. Atribut priority je volitelný a určuje prioritu v rozmezí 0 až 100, kdy 100 je nejvyšší možná priorita. Každý dceřiný element match má tři povinné atributy: type, offset, hodnota a čtvrtý volitelný atributy: mask. Detaily o těchto atributech viz Specifikace sdílení informací mime od XDG.
<alias type="media/subtype"> Tento element definuje přezdívky pro rodičovský element mime-type. Přezdívka je jednoduše typ MIME, který je někdy známý jako jiný typ. Např. application/x-pdf je přezdívka pro typ MIME application/pdf.
<sub-class-of type="media/subtype"> Tento element definuje rodičovský mime-type element jako podtřídu typu MIME určeného v atributu type. Např. image/svg je podtřídou typů MIME text/xml, text/plain a application/octet-stream.
<comment xml:lang="locale"> Tento element poskytuje pro člověka srozumitelný popis typu MIME. Tento element se nemusí vyskytovat vůbec a nebo i vícekrát, přičemž každý výskyt obsahuje jedinečnou hodnotu pro atributu xml:lang.
<root-XML namespaceURI="namespace" localName=""> Pokud je soubor vyhodnocen jako soubor XML, pak jej tento element pomůže přesněji zařadit pomocí atributů namespaceURI a localName, přičemž jsou oba dva atributy povinné. Atribut namespaceURI je jmenný prostor dokumentu a localName je název kořenového elementu dokumentu. Pokud je localName přítomen, ale hodnota je prázdná, pak může mít kořenový element libovolný název, ale jmenný prostor stále musí odpovídat.

Nejjednodušším způsobem, jak pochopit tyto soubory, je podívat se na příklad. Vypůjčme si jeden ze Specifikace sdílení mime od XDG. Příklad 5-2 ukazuje obsah zdrojového souboru nazvaného diff.xml. Definuje se v něm typ MIME text/x-diff. Je v něm několik elementů comment, které uvádí pro člověka srozumitelný název typu MIME v několika různých jazycích. Typ MIME má oba druhy pravidel, porovnání pomocí hromadné masky a zároveň ‚osahání‘ obsahu souboru (častěji známé jako magická pravidla [magic rulers]). Libovolné soubory s příponou .diff nebo .patch budou vyhodnocené jako tento typ MIME. A navíc i libovolný soubor, jehož obsah začíná řetězcem daným atributem value elementu match bude vyhodnocený jako typ MIME text/x-diff.

Vysvětlení pořadí, v jakém jsou požité hromadné masky a magická pravidla, přesahuje rámec tohoto dokumentu. Na podrobnosti se můžete podívat do Specifikace sdílení informací mime od XDG.

Příklad 5-2Příklad zdrojového souboru XML: diff.xml
<?xml version='1.0'?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="text/x-diff">
    <comment>Differences between files</comment>
    <comment xml:lang="af">verskille tussen lêers</comment>
    <comment xml:lang="cs">rozdíl mezi soubory</comment>
    <!-- more translated comment elements -->
    <magic priority="50">
      <match type="string" offset="0" value="diff\t"/>
      <match type="string" offset="0" value="***\t"/>
      <match type="string" offset="0" value="Common subdirectories: "/>
    </magic>
    <glob pattern="*.diff"/>
    <glob pattern="*.patch"/>
  </mime-type>
</mime-info>