• [^] # Re: Est-ce que Lyx ne risque pas d'être un cul-de-sac?

    Posté par . En réponse à la dépêche LyX 1.4 est disponible. Évalué à 4.

    « Un exemple très simple

    <a href="http://debian.org">debian</a>

    l'attribut href est une simple chaine, pas un arbre xml. »

    Euh oui, mais là on VEUT que ce soit une chaîne ;-) (prendre mon exemple de date à contre-pied aurait sans doute été plus heureux, je trouve). Je ne vois pas trop où est le problème en fait. Qu'on parle XQuery ou XSL/T, on utilise XPath pour naviguer dans l'arbre XML. Je vois les attributs d'un noeud - pardon, d'une balise ;-) - comme étant des données propres à celle-ci. Exactement de la même manière que je peux avoir dans un arbre en C une structure noeud du genre

    const unsigned int N = 100; /* arité */

    typedef struct Noeud_
    {
    char *etiquette; /* type de noeud */
    void *donnee; /* données spécifiques au noeud */
    struct Noeud_ *noeuds[N]; /* fils du noeud */
    } Noeud;

    Dans ce cas, je peux créer un arbre N-aire, et dont les données sont parfaitement « génériques » : il suffit d'allouer assez de mémoire pour y faire tenir tous les « attributs » que je veux. :-)

    Je ne vois pas ce qu'il y a de gênant avec ce genre de structures de données, en fait.

    Reprenons ton exemple en LISP :

    « (a (href "http://debian.org") "debian") »

    Ici, il faut définir pour chaque balise une fonction particulière (puisqu'en LISP, une parenthèse ouvrante indique que le terme qui suit est une fonction). C'est particulièrement lourd, tu ne trouves pas ? Même en faisant des setq de partout, ça risque d'être un vrai casse-tête.

    De plus, lorsque tu dis

    « Bilan, les atributs sont gérés comme des arbres et leur valeur peut aussi être un arbre, donc bien plus typé qu'une chaine. »

    En disant ça, tu ne fais que répéter ce que j'ai dit : si les attributs ne te plaisent pas, tu n'es pas obligé de les utiliser, et tu as tout à fait le droit de n'utiliser que des balises - car ce que tu proposes de faire en LISP revient exactement à ça. Si on a défini la notion d'attribut en-dehors des balises classiques, il y a quand même une raison. Et étant donné que tu définis lesdits attributs dans ta DTD ou ton schéma, tu ne perds absolument pas d'information de type.


    Le gros problème d'XML en ce moment, selon moi, c'est que beaucoup d'outils existent, mais que les gens ne les utilisent pas forcément (je radote avec les histoires de DTD et de schémas XML ;-) ). Ou alors ils utilisent XML parce que ça fait bien, mais sans réel besoin : j'ai envie de flinguer à peu près tous les programmeurs qui utilisent XML pour faire des fichiers de config, par exemple. Si dans certains cas ça peut parfaitement se justifier (par exemple un fichier de config Apache en XML, ça ne changerait pas tellement du fichier de config original), dans la plupart des cas, une bête association clef-valeur(s) (éventuellement séparées par des virgules) est largement suffisante.

    Là où XML devient intéressant, à mon avis, c'est lorsqu'on commence à traiter de gros volumes de données (et où on doit donc vraiment prendre en compte les types pour optimiser les recherches). Sinon, *bof*.