Fichiers XML source

Situés dans le répertoire <MIME>/packages, ces fichiers XML comprennent toutes les informations concernant les types MIME installés dans la base de données par l'application update-mime-database. Il existe quelques règles à propos du fichier XML lui-même :

  • Il doit spécifier l'espace de nom comme « http://www.freedesktop.org/standards/shared-mime-info »
  • L'élément racine doit être mime-info
  • Zéro ou plus d'éléments mime-type peuvent figurer comme enfants de l'élément mime-info. L'attribut type permet de spécifier le type MIME en cours de définition.

Par défaut, le fichier freedesktop.org.xml est installé dans le répertoire packages dans l'un des chemins <MIME> (généralement /usr/share/mime/packages).

Tableau V.1 donne une courte description de chaque élément pouvant représenter un enfant de l'élément mime-type.

Tableau V.1 Éléments enfants de <mime-type>
Élément (et attributs) Description
<glob pattern="*.xyz"> Cet élément spécifie un motif de correspondance de noms de fichier. Si le nom de fichier correspond, il reçoit alors le type MIME de l'élément mime-type parent. L'attribut pattern est obligatoire.
<magic priority="50"> Cet élément contient une liste d'éléments match comme enfants. L'attribut priority est facultatif et spécifie une priorité entre 0 et 100, 100 étant la plus haute priorité de correspondance. Chaque élément match enfant contient trois attributs requis : type, offset, valeur et un quatrième attribut facultatif, mask. Pour plus de détails sur ces attributs, consultez la spécification XDG de l'information MIME partagée.
<alias type="média/sous-type"> Cet élément définit un alias pour l'élément mime-type parent. Un alias est simplement un type MIME parfois connu sous le nom d'un autre type. Par exemple, application/x-pdf est un alias pour le type MIME application/pdf.
<sub-class-of type="média/sous-type"> Cet élément définit l'élément mime-type parent comme une sous-classe du type MIME spécifié dans l'attribut type. Par exemple, image/svg est une sous-classe des types MIME text/xml, text/plain et application/octet-stream.
<comment xml:lang="locale"> Cet élément fournit une description intelligible du type MIME. Cet élément peut apparaître zéro ou plusieurs fois pour autant que chaque occurrence contienne une valeur unique de l'attribut xml:lang.
<root-XML namespaceURI="espace_de_nom" localName=""> Si un fichier est identifié comme fichier XML, cet élément aide à préciser sa nature au moyen des attributs namespaceURI et localName, obligatoires les deux. L'attribut namespaceURI est l'espace de nom du document et localName le nom de l'élément racine. Si localName est présent mais que sa valeur est vide, l'élément racine peut porter n'importe quel nom, mais l'espace de nom doit toujours correspondre.

La façon la plus simple de comprendre est d'examiner un exemple. Emprunté à la spécification XDG de l'information MIME partagée, l'Exemple V.2 montre le contenu d'un fichier XML source appelé diff.xml. Cet exemple, définit le type MIME text/x-diff. Plusieurs éléments comment donnent au type MIME un nom compréhensible en plusieurs langues. Ce type MIME possède à la fois des règles de correspondance sur la base de modèles et d'autres se basant sur le « reniflage » (mieux connues sous le nom de règles magic). Tout fichier doté des extensions .diff ou .patch correspondra à ce type MIME. De plus, tout fichier dont le contenu commence par les caractères contenus dans les attributs value de l'élément match sera identifié du type MIME text/x-diff.

L'ordre d'applications des règles de correspondance et des règles « magic » dépasse l'objectif de ce document. Pour des détails à ce sujet, consultez la spécification XDG de l'information MIME partagée.

Exemple V.2 Exemple d'un fichier XML source : 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>
    <!-- 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>