• # XML n'est pas facile à lire par la machine

    Posté par (site web personnel) . En réponse au journal XML c'est de la daube!!!. Évalué à 3.

    Mais j'avoue que personnellement, je suis toujours resté septique > par rapport à ce format qu'on m'a toujours vendu comme
    universel, car facile à comprendre par l'homme et le machine.

    XML n'est pas du tout facile à lire par une machine! En tout cas c'est loin d'être le format le plus facile à lire.

    Tout d'abord, un point très important que je n'ai pas vu évoqué ailleurs: XML sert à deux choses:

    • D'une part c'est un format d'échange et persistance bien standardisé. C'est la fonction sérialisation.

    • D'autre part il permet de valider la donnée en la comparant à une DTD, une définition de document. C'est la fonction validation.

    La vaste majorité des parsers XML ne valident pas la donnée et proposent donc la fonction sérialisation de XML sans la validation. Pour la sérialisation, les formats plus efficaces que XML — du point de vue de la machine, car plus faciles à lire — existent par pelletées, certains sont d'ailleurs très anciens.

    Un parser même non validant pour XML doit prendre en charge une syntaxe plutôt riche (encodings, namespaces, extensions de la DTD, CDATA, etc.) et ils se contentent en général d'un sous-ensemble. Ce qui en pratique signifie que l'interopérabilité est loin d'être garantie.

    Un parser validant est lui, confronté à un problème supplémentaire — mais en fait c'est le seul intérêt de l'XML, en plus de la disponibilité de beaucoup de biliothèques — qui est bien-entendu la validation.

    En plus il faut noter que bien définir une DTD pour XML est difficile: il faut bien savoir qu'elle information on veut encoder dans la structure du document. (La problématique est semblable à «quelle informations sur mon programme puis-je encoder dans le système de types?»)

    Dans la pratique XML est donc surtout utilisé comme protocole de sérialisation et de façon largement incomplète donc pas nécessairement interopérable. Autrement dit, XML est utilisé pour de mauvaises raisons.

    Des formats de persistance nettement plus faciles à lire (pour l'ordinateur) que le XML sont par exemple les property lists et les S-expressions. N'importe quel programmeur peut écrire un parser de S-expressions en une après-midi, même s'il utilise un langage de bas niveau (voire l'assembleur!). De plus, d'après le Bureau des Statistiques Pifométriques, 90% des applications utilisant XML comme format de sérialisation pourraient le remplacer par des S-expressions sans perdre en fonctionnalité.

    Voici un exemple de parser validant, en OCaml:

    http://www.camlcity.org/archive/programming/pxp.html