I file sorgente XML

Posizionati nella directory <MIME>/packages, tali file XML forniscono tutte le informazioni riguardo i tipi MIME che sono installati nel database dall'applicazione update-mime-database. Ci sono poche regole da rispettare in un file XML:

  • Il file deve specificare il namespace come http://www.freedesktop.org/standards/shared-mime-info
  • L'elemento radice deve essere mime-info
  • Possono essere specificati zero o più elementi mime-type come figli dell'elemento mime-info. L'attributo type è usato per specificare il tipo MIME che si sta definendo.

In modo predefinito il file freedesktop.org.xml è installato nella directory packages in uno dei percorsi <MIME> (di solito in /usr/share/mime/packages).

In Tabella 5-1 è fornita una breve descrizione di ciascun elemento che può essere presente come figlio dell'elemento mime-type.

Tabella 5-1Child elements of <mime-type>
Elemento (e attributi) Descrizione
<glob pattern="*.xyz"> Questo elemento specifica un modello di glob nei confronti dei nomi di file. Se il nome di file corrisponde, allora ad esso viene assegnato il tipo MIME del genitore dell'elemento mime-type, L'attributo pattern è vincolante.
<magic priority="50"> Questo elemento contiene come suoi figli un elenco di elementi match. L'attributo priority è opzionale e specifica una priorità tra 0 e 100, dove 100 è la priorità di corrispondenza più alta. Ciascun elemento figlio match presenta tre attributi richiesti: type, offset, value più un quarto attributo opzionale, mask. Per informazioni dettagliate su questi attributi, consultare la specifica di informazioni mime condivise XDG.
<alias type="supporto/sottotipo"> Questo elemento definisce un alias per l'elemento genitore mime-type. Un alias è semlicemente un tipo MIME che talvolta è noto come un altro tipo. Ad esempio application/x-pdf è un alias per il tipo MIME application/pdf.
<sub-class-of type="supporto/sottotipo"> Questo elemento definisce l'elemento genitore mime-type come una sottoclasse del tipo MIME specificato nell'attributo type. Ad esempio, image/svg è una sottocasse del tipo MIME text/xml, text/plain e application/octet-stream.
<comment xml:lang="locale"> Questo elemento fornisce una descrizione intellegibile per il tipo MIME. Ci possono essere zero o più occorrenze di questo elemento, purché ciascuna contenga un unico valore per l'attributo xml:lang.
<root-XML namespaceURI="namespace" localName=""> Se un file viene riconosciuto come file XML, allora questo elemento aiuta nella ulteriore classificazione dello stesso, attraverso l'uso degli attributi namespaceURI e localName, entrambi richiesti. L'attributo namespaceURI è il namespace del documento e localName è il nome dell'elemento radice del documento. Se localName è presente, ma il suo valore è vuoto, allora l'emento radice può non avere un nome, ma il namespace deve comunque corrispondere.

Il modo più semplice per capire questi file è di osservare un esempio. Estratto dalla specifica delle informazioni mime condivise XDG, in Esempio 5-2 è mostrato il contenuto di un file XML dal nome diff.xml. Tale esempio definisce il tipo MIME text/x-diff. Ci sono diversi elementi comment che forniscono un nome intellegibile al tipo MIME in diverse lingue. Il tipo MIME presenta sia regole di corrispondenza attraverso modelli di glob sia attraverso l'uso di “sniffing” del contenuto (anche noti come regole magic). Ogni file con estensione .diff o .patch verrà risolto in tale tipo MIME. In aggiunta ogni file il cui contenuto comincia con le stringhe specificate nell'attributo value dell'elemento match, verrà risolto nel tipo MIME text/x-diff.

L'ordine in cui i modelli di glob e le regole magic sono applicate va oltre le finalità di questo documento. Per dettagli su ciò, consultare la specifica delle informazioni mime condivise XDG.

5-2 Esempio di un file sorgente 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="it">Differenze tra file</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>