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

XQUERY/SGBD XML Discussion :

[XML/XSL/XSQL] utilisation de parametre.


Sujet :

XQUERY/SGBD XML

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut [XML/XSL/XSQL] utilisation de parametre.
    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 :

    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 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
    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>
    ...
    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
     
    ....
    <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!!

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    Citation Envoyé par ericz
    J'ai d'abord posté ce mesage dans la section XML, mais ici ce sera peut etre plus approprié.

    Citation Envoyé par ericz
    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é...
    Avec quoi fais-tu ta transformation XSL, une servlet ? Déjà, il faut passer en paramètre à la feuille de style le paramètre mailID :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:param name="mailID" />
    Ensuite, utilise cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="mail[@id=$mailID]/contenu"/>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par GrandFather
    ...Déjà, il faut passer en paramètre à la feuille de style le paramètre mailID :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:param name="mailID" />
    Ensuite, utilise cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="mail[@id=$mailID]/contenu"/>

    Salut GrandFather,

    Regarde dans mon xsl, je pense avoir fait quelquechose comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <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>
    Je declare le parametre avec la valeur voulut. Ensuite je l'utilise dans la requete XPath, cela vient peut etre de la syntaxe dans la requete?? avec ou sans accolades {} ??

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par GrandFather
    Ce forum est tellement vaste que je ne savais pas ou poster exactement. Mais bon on est bien reçu partout .
    Merci d'avance pour vos aides....

Discussions similaires

  1. [XML/XSL/XSQL] Utilisation de parametre
    Par ericz dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/06/2006, 10h37
  2. Probleme XML/XSL et utilisation d'ajax
    Par titou250 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/03/2006, 18h21
  3. [Xml/XSl] utiliser des fonction vb
    Par ekmule dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/01/2006, 17h28
  4. [xml/xsl] Récuperer un parametre d'une url
    Par ekmule dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/12/2005, 14h59

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