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
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 <?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>
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 <?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>
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
et celui ci est bien transform� comme je veux par le deuxieme XSL, mais je suis oblig� de le faire manuellement.
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>
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
Partager