Début du fichier evolution.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY appname "Evolution">
<!ENTITY appversion "2.24">
<!ENTITY z-3rdParty "*">
<!ENTITY z-SM "(SM)">
<!ENTITY z-CM "(CM)">
<!ENTITY z-CLM "(CLM)">
]>
<?yelp:chunk-depth 3?>
<?xml version="1.0" encoding="utf-8"?>
Il s'agit d'un fichier xml.
Le commentaire «DOCTYPE» contenu dans un fichier XML permet d'en dire plus sur le contenu de ce fichier.
<?yelp:chunk-depth 3?>
Ce fichier xml est un fichier écrit pour «yelp» , mais pour XML (et sa syntaxe) ceci est une instruction de traitement xml. Et de plus cette instruction semble ne pas être syntaxiquement correct (tout du moins pour firefox)
Dans firefox :
Erreur d'analyse XML : mal formé
Emplacement : file:///usr/share/gnome/help/evolution/fr/evolution.xml
Numéro de ligne 10, Colonne 7 :
<?yelp:chunk-depth 3?>
------^
D'ailleurs lorsque que l'on fait
file /usr/share/gnome/help/evolution/fr/evolution.xml
le résultat est :
/usr/share/gnome/help/evolution/fr/evolution.xml: XML document text
Il faut bien voir que «file» n'utilise pas le type «mime» mais les lib. «magic», pour une investigation plus poussée, voir les exemples avec mimetype plus loin.
Si je fais
yelp usr/share/gnome/help/evolution/fr/evolution.xml
Il n'y a aucun problème, «yelp» affiche bien l'aide du produit «evolution».
même chose avec
yelp /usr/share/gnome/help/user-guide/C/gosnautilus.xml
alors qu'il ne contient pas d'instruction de traitement «
<?yelp:chunk-depth 3?>».
Par contre ce n'est pas un vrai fichier XML (pas d'entête «
<?xml version="1.0" encoding="utf-8"?>»
type /usr/share/gnome/help/user-guide/C/gosnautilus.xml
-bash: type: /usr/share/gnome/help/user-guide/C/gosnautilus.xml: not found
Donc la reconnaissance d'un fichier yelp est plus compliquée qu'une simple extension ou un en-tête.
Personnellement j'écris mes fichiers «yelp» avec l'entête xml «<?xml ......>» ET un commentaire <!DOCTYPE ....> ET une instruction «<?yelp .....>» et tu viens de me faire découvrir que ce n'est pas obligatoire (même si ce n'est pas forcément une bonne idée).
Par contre la commande mimetype semble plus poussée, qu'un simple type, mais elle a aussi ses limites avec certains fichiers xml de yelp.
mimetype /usr/share/gnome/help/evolution/fr/evolution.xml
/usr/share/gnome/help/evolution/fr/evolution.xml: application/docbook+xml
mimetype /usr/share/gnome/help/user-guide/C/gosnautilus.xml
/
usr/share/gnome/help/user-guide/C/gosnautilus.xml: application/xml
En fait mimetype exploite le
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY appname "Evolution">
.......
]
du fichier xml
Que donne la commande
mimetype nom_de_fichier_yelp
chez toi
Pour en savoir plus sur les fichiers xml
Voir Wikipedia
ou
et bien évidemment la bible
w3.org/xml