Bonjour à tous,
J'ai d'abord posté ce mesage dans la section XML, mais ici ce sera peut etre plus approprié.
Donc j'ai besoin de vos conseils experts.
Dans le cadre d'un projet pour la fac, j'ai une petite question concernant l'utilisation d'un parametre.
Le but étant d'afficher un mail : une partie etant dans la BDD et le reste dans un fichier XML (bon ca peut paraitre bizarre mais c un des point du projet)
Donc dans un XSQL je fais le lien entre ma BD et mon XML. j'appele ce XSQL à l'aide d'un parametre pour selectionner dans la BD le mail voulu. Donc je l'appele de cette manière : http://..../Mails2.xsql?IDmail=X (X=1, 2, 3... correspondant à l'id du mail).
Ensuite dans le XSL je souhaite recuperer les donnée du xml correspondan à l'idmail choisit et c'est la que je n'y arrive pas...
Voici mon code pour mieux comprendre:
Fichier XSQL :
Et voici mon XSL pour permettre un bel affichage en HTML:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <page xmlns:xsql="urn:oracle-xsql" connection="XXXXX"> <xsql:include-request-params/> <xsql:query rowset-element="BDMAILS" row-element="BDMAIL"> SELECT * FROM MAIL WHERE ID_MAIL={@IDmail} </xsql:query> <xsql:include-xml href="mails.xml"/> </page>
Et enfin le fichier XML :
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
35
36
37 ... <xsl:output method="html"/> <xsl:template match="/page"> <html> <head> <title>Mail: <xsl:value-of select="BDMAILS/BDMAIL/ID_MAIL"/></title> </head> <body bgcolor="#DDDDDD"> <xsl:apply-templates select="BDMAILS"/> <xsl:apply-templates select="mails"/> </body> </html> </xsl:template> <xsl:template match="BDMAILS"> <ul> <p> <i>Sujet : </i><xsl:value-of select="BDMAIL/SUJET"/> </p> <li><i> Envoye le : </i><xsl:value-of select="BDMAIL/DATE_MAIL"/></li> <li><i> Par : </i><xsl:value-of select="BDMAIL/EXPEDITEUR"/></li> <li><i> A destination de : </i><xsl:value-of select="BDMAIL/DESTINATAIRE"/></li> </ul> </xsl:template> <xsl:template match="mails"> <xsl:param name="mailID" select="/page/request/parameters/IDmail/text()"/> <ul> <li><i> Contenu </i> <xsl:value-of select="mail[@id='{$mailID}']/contenu/text()"/></li> </ul> </xsl:template> ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 .... <mails> <mail id="2"> <contenu>Ceci est le contenu du mail 2</contenu> </mail> <mail id="6"> <contenu>Ceci est le test 6.</contenu> </mail> </mails> ...
Donc pour la premiere partie avec le template BDMAILS pas de probleme. Mais c'est sur le second template mails que je réussit pas. La requete XPath ne renvoie rien, cela vient surement d'une mauvaise utilisation du parametre récuperé. Car quand j'execute le xsql sans le xsl je vois bien le paramatre indiqué dans le ?IDmail=X, mais je n'arrive pas a l'integrer dans ma requete pour choisir juste le mail désiré...
Merci d'avance pour votre aide!!
Partager