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 :

Cascade de transformations XSLT


Sujet :

XML/XSL et SOAP

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Cascade de transformations XSLT
    Bonjour tout le monde,

    Je suis entrain de travailler sur la partie mails automatisés d'une application.
    Cela consiste à pré-remplir un formulaire à partir de données en base de données, laisser quelques champs éditables, puis à générer un fichier XML listant tous les champs utiles au mail.

    Pour plus de souplesse et de d'évolutivité, j'ai pensé utiliser deux transformations XSLT. Je m'explique:
    -Exemple de XML généré par le formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <racine>
      <typeMail>Prise de contact</typeMail>
      <numéroCommande>X8374</numéroCommande>
      <offre>euh</offre>
      <emailClient>blabla@blabla</emailClient>
      <nomContact>toto</nomContact>
    </racine>

    -A partir du XML généré par le formulaire, on crée à l'aide d'un premier fichier xsl un deuxième XML qui représente le mail (je sépare le formulaire du contenu "texte" du mail). Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <email>
      <emailClient>blabla@blabla</emailClient>
      <Entete>
           <titre> Prise de contact<titre>
           <objet> 
                 Bienvenue M. <donneeClient> toto </donneeClient>. Merci d'avoir souscrit à <donneeCommande>euh</donneeCommande>
           </objet>
      </Entete>
      <Corps>
           Votre numéro de commande est <donneeCommande>X8374</donneeCommande>
      </Corps>
    </email>

    - A partir de ce XML et à partir d'une deuxieme fiche XSL, on obtient un fichier html qui sera envoyé au Client. Ainsi le style de tous les mails ne sera contenu que dans un seul fichier et on peut le changer aisément.


    Ma première question est: Est-ce une bonne façon de résoudre mon problème?

    J'ai commencé à tester la faisabilité de la solution mais cela ne fonctionne pas automatiquement.

    Code XML de base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="test.xsl" ?>
    <persons>
      <person username="JS1">
        <name>John</name>
        <family-name>Smith</family-name>
      </person>
      <person username="MI1">
        <name>Morka</name>
        <family-name>Ismincius</family-name>
      </person>
    </persons>
    Premier XSL

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output method="xml" indent="yes"/>
     
      <xsl:template match="/persons">
    	<xsl:processing-instruction name="xml-stylesheet">type="text/xsl" href="test2.xsl"</xsl:processing-instruction>
        <root>
          <xsl:apply-templates select="person"/>
        </root>
      </xsl:template>
     
      <xsl:template match="person">
        <name username="{@username}">
          <xsl:value-of select="name" />
        </name>
      </xsl:template>
     
    </xsl:stylesheet>
    Deuxieme XSL:

    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
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
     
    	<xsl:template match="/">
    			<html>
    				<head></head>
    				<body style="font-family:Verdana; font-size:18pt; color:green">
    					blablabla
    					<xsl:apply-templates />
    					blablabla
    				</body>
    			</html>
    	</xsl:template>
     
    	<xsl:template match="name">
    		<p style="font-family:Verdana; font-size:30pt; color:red">
    			blibli
    		</p>
    	</xsl:template>
     
    </xsl:stylesheet>

    Lorsque j'ouvre le premier XML j'obtient bien le XML suivant résultant de la première transformation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="UTF-16"?>
    <?xml-stylesheet type="text/xsl" href="test2.xsl"?>
    <root>
    <name username="JS1">John</name>
    <name username="MI1">Morka</name>
    </root>
    et celui ci est bien transformé comme je veux par le deuxieme XSL, mais je suis obligé de le faire manuellement.


    Comment faire en sorte que tout se fasse tout seul sans utiliser de script ou de code supplémentaire? Est ce un problème au niveau des HREF? Peut etre le deuxieme XML est stocké dans un dossier temporaire et du coup ne voit pas le deuxieme XSL?

    Merci beaucoup d'avance pour votre aide

    Seydou

  2. #2
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Vous pouvez me dire hein, si ma question est stupide je le prendrais pas mal

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Stupide je ne sais pas, mais tu utilises quoi pour faire ta transformation ?

    A priori je ne vois pas pourquoi ce programme déciderait de faire une autre transformation juste après, juste parce que tu aurais eu l'idée de produire <?xsl-stylesheet?> dans le résultat.

    Logiquement il vaudrait mieux faire la transformation en une seule passe, ça t'apporte quelque chose de ne pas le faire ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Ça me permet de ne pas avoir a changer tous les xslt des mails juste parce que je veux changer la police: un XSLT pour chaque mail et un XSLT unique (ou pas d'ailleurs) pour le style.

    Allez apparemment c'est pas possible. Du coup j'hésite entre soit mettre les données du mail directement dans le premier XML, soit faire les transformations directement en javascript dans la page HTML. Le truc c'est que j'apporte une microévolution à un gros logiciel qui existe déjà et je sais pas exactement ce qui se passe derrière. J'ai un compte admin qui me permet de modifier les XSLT des mails, fin. Donc le moins ya de choses a changer dans ce que je vais proposer, le mieux c'est. Et je propose a mon maitre de stage, qui lui discute avec la MOE. J'ai pas un lien direct avec eux. C'est pour ca que je ne voulais pas toucher au XML de base. Ma solution me permettais de leur dire j'ai une solution, faut juste rajouter un XSLT séparé pour le style et ca tourne tout seul, rien a changer.. et j'aurais fait toutes les modifs qu'il faut.

    Après je sais que pour faire évoluer un SI faut partir de la base et pas rajouter des briques au fur et à mesure sans vision d'ensemble (#bonEleve), mais bon, c'est juste des mails..

    EDIT: Pour répondre à ta question, pour l'instant j'utilise le navigateur pour tester. C'est vrai que c'est une question pertinente à leur poser thanks

Discussions similaires

  1. transformation xslt
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 05/07/2005, 16h43
  2. transformation xslt
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/06/2005, 16h46
  3. xhtml-->xml transformation xslt
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 15/06/2005, 15h23
  4. xhtml->xml transformation xslt
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 14/06/2005, 11h17
  5. [XSLT] Récupération de la transformation Xslt
    Par Pignoufy dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 06/04/2005, 15h11

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