Os ficheiros XML de origem

Localizados no directório <MIME>/packages, estes ficheiros XML disponibilizam toda a informação sobre os tipos MIME que é instalada na base de dados pela aplicação update-mime-database. Existem algumas regras sobre o próprio ficheiro XML:

  • Tem de especificar o nome de espaço como sendo http://www.freedesktop.org/standards/shared-mime-info
  • O elemento raiz tem de ser mime-info
  • Podem ser especificados zero ou mais elementos mime-type como filhos do elemento mime-info. O atributo type é utilizado para especificar o tipo MIME que está a ser definido.

Por omissão, o ficheiro freedesktop.org.xml é instalado no directório packages num dos caminhos <MIME> (normalmente /usr/share/mime/packages).

Tabela 5-1 dá uma descrição abreviada de cada um dos elementos que podem ocorrer como filhos do elemento mime-type.

Tabela 5-1Child elements of <mime-type>
Elemento (e atributos) Descrição
<glob pattern="*.xyz"> Este elemento especifica um padrão glob a ser utilizado sobre os nomes de ficheiros. Se o nome tiver equivalência, é-lhe atribuído o tipo MIME do elemento pai mime-type. O atributo pattern é obrigatório.
<magic priority="50"> Este elemento contém uma lista de elementos match como seus filhos. O atributo priority é opcional, e especifica uma prioridade entre 0 e 100, sendo 100 a prioridade de equivalência mais elevada. Cada elemento filho match tem três atributos obrigatórios: type, offset, valor e um quarto atributo opcional, mask. Para detalhes sobre estes atributos, consulte especificação XDG de informação mime partilhada.
<alias type="media/subtipo"> Este elemento define uma alcunha para o elemento pai mime-type. Uma alcunha é simplesmente um tipo MIME que é por vezes conhecido como outro tipo. Por exemplo, application/x-pdf é uma alcunha do tipo MIME application/pdf.
<sub-class-of type="media/subtipo"> Este elemento define o elemento pai de mime-type como uma subclasse do tipo MIME especificado no atributo type. Por exemplo, image/svg é uma subclasse do tipo MIME text/xml, text/plain, e application/octet-stream.
<comment xml:lang="configuração regional"> Este elemento apresenta uma descrição legível por humanos do tipo MIME. Podem existir zero ou mais ocorrências deste elemento desde que cada um contenha um valor único para o atributo xml:lang.
<root-XML namespaceURI="espaço de nome" localName=""> Se o ficheiro é considerado um ficheiro XML, este elemento ajuda a classifica-lo mais detalhadamente utilizando os atributos namespaceURI e localName , ambos obrigatórios. O atributo namespaceURI é o nome de espaço do documento, e localName é o nome do elemento raiz do documento. Se localName estiver presente mas o seu valor for vazio, o elemento raiz poderá ter um qualquer nome, mas o nome de espaço terá de ser equivalente.

A forma mais fácil de compreender estes ficheiros é observando um exemplo. Copiando da especificação XDG de mime partilhada, Exemplo 5-2 apresenta o conteúdo de um ficheiro XML de origem denominado diff.xml. Este exemplo define o tipo MIME text/x-diff. Existem múltiplos elementos comment que apresentam um nome humanamente legível para o tipo MIME num número de vários idiomas. Este tipo MIME tem ambas as regras de equivalência através de padrões glob e através da utilização de “inspecção” de conteúdo (mais conhecido como regras mágicas). Qualquer ficheiro com a extensão .diff ou .patch serão considerados deste tipo MIME. Adicionalmente qualquer ficheiro cujo conteúdo comece pela expressão especificada no atributo value do elemento match, irá ser considerado do tipo MIME text/x-diff.

A ordem em que os padrões glob e regras mágicas são aplicados está para lá do âmbito deste documento. Para detalhes sobre isso, consulte a especificação XDG de informação mime partilhada.

Example 5-2Exemplo de um ficheiro XML de origem: 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="pt">Diferenças entre ficheiros</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>