IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

Sylma, mon framework XML


Sujet :

XML/XSL et SOAP

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 23
    Par défaut Sylma, mon framework XML
    Bonjour,

    Je travaille depuis quelques temps, environ 2 ans, sur un framework XML, baptisé Sylma. Il est loin d'être achevé, et pas vraiment prêt pour la production, mais je me demandais si déjà, certain d'entre vous serait intéressé par ce projet.

    Dans les grandes lignes, l'idée étais de faire un système qui permette de coder entièrement son site en XML, afin de pouvoir utiliser un éditeur en ligne et de pouvoir modifier chaque aspect du site, autant graphique que structurel du site.

    Je n'ai pas publié de version facilement "installable", le coeur se trouve sur google code, les modules sur un serveur privé, et il faut encore qq fichiers de base. Cependant si cela vous motive je pourrais faire un rapide fichier compressé avec quelques explications pour l'installation.

    Voici quelques fonctionnalités déjà en place.

    Les actions (*.eml) sont ont coeur du système, elle permettent d'agréger le contenu de plusieurs actions, d'appeler des objets PHP via les interfaces, et représentent le point d'entrée des appels au serveur. Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?xml version="1.0" encoding="utf-8"?>
    <le:action xmlns:le="http://www.sylma.org/execution" xmlns:li="http://www.sylma.org/interface" xmlns="http://www.w3.org/1999/xhtml" xmlns:la="/sylma/processors/action-builder/schema">
      <le:settings>
        <le:name>WYSIWYG Explorer</le:name>
        <le:processor path="/sylma/processors/action-builder" namespace="/sylma/processors/action-builder/schema"/>
        <le:argument format="XML_Directory" name="directory"/>
      </le:settings>
      <le:window>
        <li:add-js>/sylma/processors/action-builder/sylma.js</li:add-js>
        <li:add-css le:format="string">
          <le:directory/>
          <le:argument>/main.css</le:argument>
        </li:add-css>
      </le:window>
      <le:action path="../lightbox/slimbox"/>
      <la:layer name="galerie" extend-base="sylma.galerie-classes" class="galerie">
        <la:property name="pathInterface">
          <le:string>
            <le:get-settings>module[@name='explorer']/path</le:get-settings>
            <le:argument>/interface</le:argument>
          </le:string>
        </la:property>
        <div id="galerie">
          <le:action path="tools"/>
          <le:action path="mozaic">
            <le:string le:name="path">
              <le:get-argument name="directory"/>
            </le:string>
          </le:action>
          <le:action path="tools/add"/>
        </div>
      </la:layer>
    </le:action>
    Les interfaces permettent de se connecter aux object PHP, en les créant puis en appelant leurs méthodes. Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="utf-8"?>
    <class xmlns="http://www.sylma.org/interface">
      <file>Users.php</file>
      <name>Users</name>
      <method return-default="true" name="loadUser" path="load-user">
        <argument name="user" format="php-string"/>
      </method>
      <method name="login_do" path="login_do" return-default="true"/>
      <method name="logout" path="logout" return-default="true"/>
      <method name="getList" path="list" return-default="true"/>
    </class>
    La sécurité, basé sur un système identique à linux (owner, group, mode) qui permet d'indiquer des droits sur les fichiers ou les éléments de fichiers. Deux exemples :

    Un fichier 'directory.sml':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?xml version="1.0" encoding="utf-8"?>
    <directory xmlns="http://www.sylma.org/directory" xmlns:ls="http://www.sylma.org/security">
      <propagate>
        <ls:security>
          <ls:owner>root</ls:owner>
          <ls:group>0</ls:group>
          <ls:mode>751</ls:mode>
        </ls:security>
      </propagate>
      <file name="index.eml">
        <ls:security>
          <ls:owner>root</ls:owner>
          <ls:group>0</ls:group>
          <ls:mode>750</ls:mode>
        </ls:security>
      </file>
    </directory>
    Un élément sécurisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a id="user-login" ls:owner="root" ls:mode="701" ls:group="famous" href="/sylma/modules/users/login">connexion</a>
    XPath et XSLT sont les premières fonctionnalités à avoir été implémentées, voici deux exemples PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->getDocument()->get("//category[@absolute-path=\"$sPath\"]");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $oRedirect->getDocument('post')->parseXSL($oTemplate, false);
    Le javascript peut être généré lui aussi dans le fichier, via des élément qui vont crocher les événement aux éléments HTML, et créer des objets à partir de classe, liés également aux éléments HTML. J'utilise la librairie Mootools. Un exemple, extrait du module explorer qui liste le contenu des répertoire, ici, un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:la="/sylma/processors/action-builder/schema" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
      <xsl:template name="file">
        <la:layer key="{@full-path}" class="file">
          <la:property name="path">
            <xsl:value-of select="@full-path"/>
          </la:property>
          <la:property name="name">
            <xsl:value-of select="@name"/>
          </la:property>
          <la:property name="owner">
            <xsl:value-of select="@owner"/>
          </la:property>
          <la:property name="group">
            <xsl:value-of select="@group"/>
          </la:property>
          <la:property name="mode">
            <xsl:value-of select="@mode"/>
          </la:property>
          <la:property name="sylma-update-origin">interface</la:property>
          <la:property name="sylma-update-path">/update-file</la:property>
          <div class="resource {name()}">
            <la:event name="mouseenter"><![CDATA[return sylma.explorer.tools.show(this);]]></la:event>
            <la:event name="mouseleave"><![CDATA[return sylma.explorer.tools.hide();]]></la:event>
            <div class="preview">
              <input type="hidden"/>
            </div>
            <span>
              <xsl:value-of select="@name"/>
            </span>
          </div>
        </la:layer>
      </xsl:template>
    </xsl:stylesheet>
    La librairie, est composée de classes (XML_Document, XML_Element) qui vont remplacer les objets normalement utilisé pour gérer un object DOM en PHP (DOMDocument, DOMElement) en modifiant les appels standards (ex: firstChild) par des appels plus simples (getFirst()) et en ajoutant des fonctionnalités (ex: get() et read() effectuent des requêtes XPath).

    Dernièrement, j'ai intégré une base de données XML, et les requête XQuery/XQueryX qui vont avec.

    En ce moment je travaille à intégrer les schéma XML (1.1), pour permettre le contrôle de validité, et faciliter la création et l'édition de contenu XML.

    Quelques liens :

    Le code
    Le site officiel (il n'y a encore rien)
    La seul page qui contient des infos pour le moment, sur mon site

    Voilà pour un premier aperçu, si vous avez des question, des remarques ou critiques ou si vous êtes intéressé à participer au projet, n'hésitez pas à laisser des comms

    PS : Désolé si ce n'est pas le bon endroit pour poster ce message et merci d'avance de m'en informer.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hum. Difficile d'imaginer à quoi ça ressemble sans un exemple fonctionnel.

    Mais j'ai une crainte : ça ressemble à l'un de ces trucs qui servent à remplacer du langage de programmation par des balises. Attention : cette idée même est mauvaise. Il n'est pas possible de bien la réaliser, parce que ce qui est bien, c'est de ne pas la réaliser. C'est une idée qui n'est pas neuve, et elle a largement prouvé qu'il faut l'oublier.

    Par exemple, le fait de définir une classe avec des données et des méthodes paramétrées. De temps en temps il arrive qu'on n'ait pas le choix, donc ça plus les mauvaises idées, ça fait qu'on en voit dans le monde réel, mais :
    - Idéalement il aurait fallu pouvoir faire autrement.
    - C'est le travail d'un langage de programmation, qui a déjà sa syntaxe et ses types.

    Après, bon, si ça se trouve, c'est pas tout du l'idée principale de Sylma, tu sais déjà tout ça et j'ai marché complétement à côté. C'est possible.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 23
    Par défaut
    ça ressemble à l'un de ces trucs qui servent à remplacer du langage de programmation par des balises.
    Oui c'est un peu l'idée, en partie. Tous les langage utilisé le font à leur manière, XSL pour la transformation, XPath pour la localisation, XQuery ou XPath2 pour le traitement DOM. A cela j'ai ajouté deux structure de contrôle dans les actions, les switch, if et if-not. Toute la difficulté c'est de définir la place que chacun doit avoir dans le déroulement du processus.

    Pour plus de clareté, voici deux screenshots. Une action et le rapport qui l'accompagne.

    Dans le premier, le rapport d'informations, on trouve la hiérarchie d'actions appelés, avec pour chacune les variables, les arguments, les fichiers utilisés et les requête xpath (Les ronds avec des numéros après les noms), ainsi que le temps d'exécution, le nombre requêtes et de fichier par rapport à l'ensemble (Les carrés bleus et blancs).

    Nom : actions_infos.jpg
Affichages : 63
Taille : 48,2 Ko

    Le second c'est un fichier d'action avec une meilleure coloration des préfixes. On y voit l'ajout de fichiers CSS et JS, la déclaration d'un objet javascript dans laquelle il y'a l'aggrégation des sous-actions.

    Nom : action_xml.jpg
Affichages : 69
Taille : 45,8 Ko

    Il n'est pas possible de bien la réaliser, parce que ce qui est bien, c'est de ne pas la réaliser.
    De temps en temps il arrive qu'on n'ait pas le choix, donc ça plus les mauvaises idées, ça fait qu'on en voit dans le monde réel
    La drogue c'est mal.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 23
    Par défaut
    Bon, je vois que ça n'intéresse pas grand monde, j'en profite pour faire un petit up et vous dire que la page d'accueil des sources a été mise à jour, avec plus de détails.

    Et aussi vous informer d'une nouvelle fonctionnalité, la validation des schémas W3C, elle n'est pas encore complète mais le sera bientôt.
    Elle permet en plus de la validation, d'obtenir un modèle. C'est à dire un document XML mélangeant le schéma et le document d'origine avec le résultat de la validation (erreur de types, éléments manquant).
    Cela permet ensuite, via un template XSL, de générer des formulaires ou des interfaces JS plus complexes (en cours) avec l'action-builder ce qui, théoriquement, permettrait des trucs cool comme la validation et la suggestion en AJAX.

    La page est en anglais (en tout cas j'essaie), dites-le moi si vous ne capter rien je pourrais faire une traduction.

    Pour terminer, si vous avez des suggestions sur la manière de faire connaître mon projet, je suis preneur.

    Bonne soirée/journée à tous.

  5. #5
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Pour moi, Sylma est une bonne illustration de ce qu'il est possible de faire avec du XML.

    En matière de CMS, le milieu XML international aimerait plutôt disposer d'une solution en tout XML, typiquement avec une base XML. Mais je suis convaincu qu'il vaudrait mieux faire ses preuves sur les standards actuels tels que PHP/MySQL et pour moi c'est un point très positif pour Sylma.

    Si l'on parle de programmation déclarative en comparaison avec la programmation procédurale, c'est bien le principe et je pense que le meilleur langage informatique est celui que l'on s'écrit soi-même pour ses propres besoins. Le XML est vraiment bien fait pour ça et ce sera de plus en plus ringard de continuer à toujours tout écrire en PHP, .Net ou Java.

    En faire profiter les autres, voilà l'esprit open source ! C'est aussi un moyen pour enrichir encore le produit. Toute la difficulté réside dans la communication : ça prend du temps et les découragements risquent de pointer leur nez. Viser l'international est une bonne idée.

    J'ai justement un site à réécrire en CMS...

    -Alain

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 23
    Par défaut
    Oui, c'était l'idée de le rendre accessible en utilisant PHP.

    Concernant MySQL, il y'a une librairie mais qui n'est plus à jour, il faudra que je m'en occupe. J'utilise maintenant BaseX avec les requêtes XQuery. L'installation est facile, c'est en java et, si on perd en accessibilité, c'est bien plus avantageux de récupérer directement du XML.
    Sylma peut aussi fonctionner sans, du moment qu'on a pas de fichiers XML trop volumineux.

    Je le déconseillerais pour de la production si on a pas une bonne connaissance du programme, il y'a encore beaucoup de chose à faire pour garantir sa stabilité.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 23
    Par défaut
    Bonjour, petite interlude Sylma.
    Ce fil devient un peu l'actu officielle, j'espère que ça ne dérange pas, et peut-être que cela finira par intéresser quelques courageux développeurs, qui sait.

    Donc grand changements dans la base de données, j'ai travaillé récemment sur un site, qui nécessitait une base de données solides. BaseX m'ayant un peu déçu, du à de sérieux problèmes de gestion des espaces de nom, je suis passé à eXist qui est largement plus complet, bien qu'il y aient probablement beaucoup de fonctions inutiles. Quelque part Sylma et eXist sont assez similaires dans le genre dogmatique XML, et utilisation des standards, ça ouvre des perspectives intéressantes sur leur utilisation commune.

    Avec l'arrivé d'eXist j'ai développé les requêtes xQuery, maintenant en partie générer en XSL, XSL qui s'avère vraiment efficace avec en plus l'utilisation d'une plus grande librairie de fonctions, notamment pour la gestion des schémas.
    A noter que eXist semble avoir aussi une gestion des schémas, mais apparemment un peu limité pour ce que je voudrais faire.

    Les schémas, justement, qui permettent de générer les formulaires et les listing, très sommaires pour le moment. Intégration AJAX à venir.

    A noter aussi que pour ce site, j'ai du implémenter des exports et imports de données depuis des sites externes. Tout en XML, l'idéal donc, avec des feuilles XSL pour la transformation. Là aussi les schémas sont utilisés pour la résolution des clefs.

    Une dernière chose à propos de xQuery que je découvre gentiment.
    Je trouve ce langage fort sympathique avec sa gestion stricte des typages d'arguments, l'imbrication inhabituelle des structures, ou encore les espaces de noms, similaires à XML, pour indiquer les variables ou les fonctions. Je me réjouis d'en apprendre plus...

    Voilà donc pour ce "point Sylma" plus de news à venir bientôt.
    +

Discussions similaires

  1. [XSLT] une question sur mon fichier XML
    Par delma dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 20/10/2006, 17h08
  2. Savoir si mon document XML est valide
    Par jsaviola dans le forum Valider
    Réponses: 1
    Dernier message: 28/04/2006, 13h43
  3. erreur à l'ouverture de mon fichier xml
    Par 2tsiris dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 03/04/2006, 13h10
  4. Parser mon document XML.
    Par Bruno13 dans le forum Langage
    Réponses: 3
    Dernier message: 28/01/2006, 14h30
  5. [XML]Comment tester que mon fichier XML est comme ceci?
    Par Devil666 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 02/06/2005, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo