XML-källfilerna

Dessa XML-filer finns i katalogen <MIME>/packages och tillhandahåller all information angående MIME-typer som finns installerade i databasen med programmet update-mime-database. Det finns ett par regler angående själva XML-filen:

  • Den måste ange namnrymden som http://www.freedesktop.org/standards/shared-mime-info
  • Rotelementet måste vara mime-info
  • Noll eller flera mime-type-element kan anges som barn till mime-info-elementet. Attributet type används för att ange MIME-typen som definieras.

Som standard installeras filen freedesktop.org.xml i katalogen packages i en av <MIME>-sökvägarna (vanligtvis /usr/share/mime/packages).

Tabell 5-1 ger en kort beskrivning för varje element som kan påträffas som barn till mime-type-elementet.

Tabell 5-1Barnelement till <mime-info>
Element (och attribut) Beskrivning
<glob pattern="*.xyz"> Det här elementet anger ett glob-mönster mot filnamn. Om filnamnet matchar, kommer det att tilldelas MIME-typen för mime-type-förälderelement. Attributet pattern är obligatoriskt.
<magic priority="50"> Det här elementet innehåller en lista med match-element som dess barn. Attributet priority är valfritt, och anger en prioritet mellan 0 och 100, där 100 är den högsta matchande prioriteten. Varje match-barnelement har tre nödvändiga attribut: type, offset, värde och ett fjärde valfritt attribut, mask. För detaljer om dessa attribut, se XDG shared mime info specification.
<alias type="media/subtype"> Det här elementet definierar ett alias för mime-type-förälderelementet. Ett alias är helt enkelt en MIME-typ som ibland är känd som en annan typ. Till exempel är application/x-pdf ett alias för MIME-typen application/pdf.
<sub-class-of type="media/subtype"> Det här elementet definierar mime-type-förälderelementet som en underklass för MIME-typen angiven i attributet type. Till exempel är image/svg en underklass för MIME-typen text/xml, text/plain, och application/octet-stream.
<comment xml:lang="lokal"> Det här elementet tillhandahåller en mänskligt läsbar beskrivning för MIME-typen. Det kan finnas noll eller fler förekomster av det här elementet så länge som varje innehåller ett unikt värde för attributet xml:lang.
<root-XML namespaceURI="namnrymd" localName=""> Om en fil fastställs att vara XML-fil, kommer det här elementet att hjälpa till att ytterligare klassificera den genom användning av attributen namespaceURI och localName, för vilket båda är nödvändiga. Attributet namespaceURI är namnrymden för dokumentet, och localName är namnet på rotelementet för dokumentet. Om localName finns men dess värde är blankt, kommer rotelementet ha valfritt namn, men namnrymden måste fortfarande matchas.

Det enklast sättet att förstå dessa filer på är att ta en titt på ett exempel. Låneinformation från XDG shared mime specification, Exempel 5-2 visar innehållet i en XML-källfil kallad diff.xml. Det här exemplet definierar MIME-typen text/x-diff. Det finns flera comment-element som ger ett mänskligt läsbart namn för MIME-typen på ett antal olika språk. Den här MIME-typen har både regler för matchning genom glob-mönster och genom användningen av “sniffning” av information (bättre känd som magic-regler). Någon fil med filändelsen .diff eller .patch kommer att slås upp till den här MIME-typen. Även någon fil vars innehåll börjar med strängarna angivna i value-attributen för match-elementet, kommer att slås upp till MIME-typen text/x-diff.

Ordningen i vilken glob-mönster och magic-regler gäller är utanför omfånget för det här dokumentet. För detaljer om det, se XDG shared mime info specification.

Exempel 5-2Exempel på en XML-källfil: 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="sv">Skillnader mellan filer</comment>
    <!-- fler översatta kommentarselement -->
    <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>