Πηγαία αρχεία XML

Τα αρχεία XML βρίσκονται στον κατάλογο <MIME>/packages και παρέχουν πληροφορίες σχετικά με τους τύπους MIME που έχουν εγκατασταθεί στη βάση δεδομένων από την εφαρμογή update-mime-database. Για τα αρχεία XML ισχύουν ορισμένοι κανόνες:

  • Πρέπει να ορίζουν το namespace ως http://www.freedesktop.org/standards/shared-mime-info
  • Το γονικό στοιχείο πρέπει να είναι το mime-info
  • Τα θυγατρικά του στοιχείου mime-info μπορούν να είναι κανένα ή περισσότερα στοιχεία mime-type. Χρησιμοποιείται το γνώρισμα type για να προσδιορίσει τον τύπο MIME περί του οποίου πρόκειται.

Η προεπιλογή για το αρχείο freedesktop.org.xml είναι να βρίσκεται εγκατεστημένο στον κατάλογο packages σε μία από τις διαδρομές <MIME> (συνήθως /usr/share/mime/packages).

Ο Πίνακας 5-1 περιέχει σύντομες περιγραφές όλων των στοιχείων που μπορούν να εμφανιστούν ως θυγατρικά του στοιχείου mime-type.

Table 5-1Θυγατρικά στοιχεία του <mime-type>
Στοιχείο (και γνωρίσματα) Περιγραφή
<glob pattern="*.xyz"> Αυτό το στοιχείο προσδιορίζει ένα μοτίβο glob για ονόματα αρχείων. Αν το όνομα αρχείου αντιστοιχεί στο μοτίβο, τότε του ανατίθεται ο τύπος MIME του γονικού στοιχείου mime-type. Το γνώρισμα pattern είναι υποχρεωτικό.
<magic priority="50"> Αυτό το στοιχείο περιέχει μία λίστα θυγατρικών στοιχείων match. Το γνώρισμα priority είναι προαιρετικό, και ορίζει μία προτεραιότητα μεταξύ 0 και 100, όπου το 100 αποδίδεται στην υψηλότερη προτεραιότητα αντιστοίχισης. Κάθε θυγατρικό στοιχείο match περιέχει τρία υποχρεωτικά γνωρίσματα: type, offset, τιμή και ένα τέταρτο, προαιρετικό, το mask. Για λεπτομέρειες σχετικά με τα γνωρίσματα αυτά, δείτε το XDG shared mime info specification.
<alias type="μέσο/υποτύπος"> Αυτό το στοιχείο ορίζει ένα alias για το γονικό στοιχείο mime-type. Πολύ απλά, τα ψευδώνυμα είναι τύποι MIME που ορισμένες φορές είναι γνωστοί με το όνομα άλλου τύπου. Π.χ., το application/x-pdf είναι ψευδώνυμο του τύπου MIME application/pdf.
<sub-class-of type="μέσο/υποτύπος"> Αυτό το στοιχείο ορίζει το γονικό στοιχείο mime-type ως υποκλάση του τύπου MIME του γνωρίσματος type. Π.χ., το image/svg αποτελεί υποκλάση των τύπων MIME text/xml, text/plain και application/octet-stream.
<comment xml:lang="εντοπιότητα"> Αυτό το στοιχείο παρέχει μία περιγραφή του τύπου MIME σε μορφή ευανάγνωστη για ανθρώπους. Αυτό το στοιχείο μπορεί να εμφανίζεται καμία ή περισσότερες φορές, αρκεί καθεμιά τους να περιέχει μοναδική τιμή για το γνώρισμα xml:lang.
<root-XML namespaceURI="namespace" localName=""> Αν ένα αρχείο ορίζεται σε αρχείο XML, το στοιχείο αυτό επιτρέπει την περαιτέρω ταξινόμηση του αρχείου μέσω των υποχρεωτικών γνωρισμάτων namespaceURI και localName. Το γνώρισμα namespaceURI δίνει το namespace του εγγράφου, ενώ το localName δίνει το όνομα του γονικού στοιχείου του. Αν υπάρχει το localName, αλλά η τιμή του είναι κενή, τότε το γονικό στοιχείο μπορεί να πάρει οποιοδήποτε όνομα· όμως το namespace θα πρέπει να είναι το κατάλληλο.

Ο πιο εύκολος τρόπος για να γίνουν κατανοητά αυτά τα αρχεία είναι μέσω ενός παραδείγματος. Το Παράδειγμα 5-2 (δανεισμένο από το XDG shared mime specification) εμφανίζει τα περιεχόμενα ενός πηγαίου αρχείου XML με όνομα diff.xml. Το παράδειγμα ορίζει τον τύπο MIME text/x-diff. Στα διάφορα στοιχεία comment δίνεται το ευανάγνωστο όνομα του τύπου MIME σε διάφορες γλώσσες. Αυτός ο τύπος MIME περιλάμβανει κανόνες αντιστοίχισης τόσο μέσω μοτίβων glob όσο και μέσω “sniffing” (ανίχνευσης) του περιεχομένου (γνωστών ως κανόνων magic). Όλα τα αρχεία με επέκταση .diff ή .patch θα αντιστοιχίζονται σε αυτόν τον τύπο MIME. Επιπλέον, θα αντιστοιχίζονται στον τύπο MIME text/x-diff όλα τα αρχεία των οποίων τα περιεχόμενα ξεκινούν με τα αλφαριθμητικά που ορίζονται από τα γνωρίσματα value του στοιχείου match.

Ο οδηγός αυτός δε θα ασχοληθεί με την ιεράρχηση των μοτίβων glob και των μαγικών κανόνων. Λεπτομέρειες για αυτό το θέμα μπορείτε να βρείτε στο XDG shared mime info specification.

Παράδειγμα 5-2Παράδειγμα πηγαίου αρχείου 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>
    <!-- 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>