Re : Hoa_Xyl vient d'apparaître dans le tronc
Pour la seconde partie de ton message, il faut comprendre une autre chose. Les données sont construites par l'utilisateur. Il ne devrait pas avoir à manipuler des données très compliquées. Les données vont provenir essentiellement des contrôleurs dans le cas d'une architecture n-tiers (MVC par exemple), et donc l'utilisateur devra les présenter facilement pour les exploiter facilement. C'est le rôle de la couche modèle ou contrôleur. La vue ne devrait pas trop travailler. Je fais un parallèle volontaire avec le MVC car ce sera un cas concrêt d'utilisation.
Je me suis interrogé sur la pertinence d'une modélisation à base d'array (data buckets et store) parce que je suis parti du principe que les docs XYL sont, par design, aussi restrictifs que ne le sont des templates de StringTemplate http://www.stringtemplate.org/
J'ai pensé à StringTemplate parce que je me suis souvenu de ce doc: http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf
Les possibilités de computation de ces templates s'arrêtent aux tests booléens (sur des variables uniques, pas sur des expressions). Tout le reste est purement déclaratif.
Dans les exemples que tu as donné et c'est vérifié au niveau du code de la dernière révision, il n'y a aucune computation qui soit exercée au niveau des nodes XYL. Pas de notion de boucles, conditions etc. Tout est reporté sur la nature des "data sources".
Si tel est le cas, comment un utilisateur va-t-il construire ses arrays pour exprimer quelque chose proche de ceci? :
// if user_is_logged
<h1 value="?foo" />
// else
<h2 value="?foo" />Ou, une variante:
// if user_is_logged
<h1 value="?foo" />
// else
<h1 value="?bar" />Donc, on pourrait dire, faisons juste:
<h1 value="?foo" />On aura toujours un h1 (et pas de h2) et les data de ?foo seront pré définies avec la bonne valeur.
S'il s'agit de simples valeurs scalaires, OK, ça va. Mais si ?foo est de type array, j'imagine que la construction des data buckets va rapidement devenir complexe et redondante. Une redondance rendue nécessaire par la nature "data driven" du système.
A ce problème, j'envisage plusieurs solutions. Tu en as d'ailleurs esquissé certaines ici et je ne doute pas que tu as déjà songé à tout ça. Il n'y a d'ailleurs peut être pas de problème du tout! Je suis toute ouïe!
Dans tes plans, souhaites-tu que XYL se rapproche de XUL dans la mesure où certains éléments auraient pour rôle de "modifier" le XYL post-processed (je pense à des trucs comme <rule>, <where> etc). Tu as parlé de <overlap> ou de yielding, mais il s'agit d'une autre catégorie de modifications: quelque chose qui se rapprocherait du pre-processing. Je ne sais pas si je me fais bien comprendre...
Une autre possibilité serait de mettre le paquet niveau selecteurs (?blah). On a parlé d'xpath pour array. Le choix de l'utilisation des arrays pour leur rapidité et leur faible impacte mémoire ne sera-t-il pas compromis par la possible lourdeur d'un tel système de query maison?
Encore une autre possibilité: ce coup ci, les data buckets sont heu... un doc SimpleXML. Les références sur arrays sont directement des $var pointant sur des SimpleXMLElement. Toute la logique de traversal est dispo avec DOM et on a xpath aussi. Bref, autant utiliser xslt?
Tes réflexions sont intéressantes et m'évitent de taper bêtement dans des murs. Je devrais plus communiquer sur ce que je fais tiens
Tu l'auras remarqué, XYL m'interesse. Une sorte de porte d'entré dans Hoa? Je t'avais dit que je m'y pencherais un de ces 4. Bon bah voilà, c'est fait! ;)
Dernière fois dit par metagoto (24 Jul. 2010 08:58)