Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
644 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  recuperer un attribut d'un noeud sans child

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recuperer un attribut d'un noeud sans child

n°571721
PETOZAK
Posté le 20-11-2003 à 16:24:35  profilanswer
 

Bonjour,
j'ai un XML qui ressemble a ca
 
<REQUEST>
 <QUERY AscDesc="desc" SortType="MSG_TYPE" CodeSender="U" endDate="02AUG03" startDate="01AUG02">
      <ENDDATE>02AUG03</ENDDATE>  
 </QUERY>
 <RESULTSET>
 </RESULTSET>
</REQUEST>
 
Je veux recuperer l'attribut pour le mettre dans un Textbox je fait en XSL:
<td width="50" height="25"> <input name="frm" class="tf_normal" style="WIDTH: 77px; "><xsl:attribute name="value"><xsl:value-of select="./REQUEST/QUERY[@carrierCodeSender]"/></xsl:attribute></input></td>
 
 
Le prob c que ca ne fait rien pourquoi?

mood
Publicité
Posté le 20-11-2003 à 16:24:35  profilanswer
 

n°571733
walli
Posté le 20-11-2003 à 16:31:31  profilanswer
 

PETOZAK a écrit :

Bonjour,
j'ai un XML qui ressemble a ca
 
<REQUEST>
 <QUERY AscDesc="desc" SortType="MSG_TYPE" CodeSender="U" endDate="02AUG03" startDate="01AUG02">
      <ENDDATE>02AUG03</ENDDATE>  
 </QUERY>
 <RESULTSET>
 </RESULTSET>
</REQUEST>
 
Je veux recuperer l'attribut pour le mettre dans un Textbox je fait en XSL:
<td width="50" height="25"> <input name="frm" class="tf_normal" style="WIDTH: 77px; "><xsl:attribute name="value"><xsl:value-of select="./REQUEST/QUERY[@carrierCodeSender]"/></xsl:attribute></input></td>
 
 
Le prob c que ca ne fait rien pourquoi?


 
c'est quoi ton 'carrier' ?

n°572181
PETOZAK
Posté le 21-11-2003 à 09:52:08  profilanswer
 

au fait il faut corriger :select="./REQUEST/QUERY[@CodeSender]"

n°572222
walli
Posté le 21-11-2003 à 10:37:24  profilanswer
 

et si tu fais ?

Code :
  1. <td width="50" height="25">
  2.   <xsl:element name="INPUT">
  3.      <xsl:attribute name="name">frm</xsl:attribute>
  4.      <xsl:attribute name="class">tf_normal</xsl:attribute>
  5.      <xsl:attribute name="whitth">77px</xsl:attribute>
  6.      <xsl:attribute name="value">REQUEST/QUERY[@CodeSender]</xsl:attribute>
  7.   </xsl:element>
  8. </td>


 
un truc dans le genre...

n°572723
chocoboy
Posté le 21-11-2003 à 16:45:18  profilanswer
 

PETOZAK a écrit :

Bonjour,
j'ai un XML qui ressemble a ca
 
<REQUEST>
 <QUERY AscDesc="desc" SortType="MSG_TYPE" CodeSender="U" endDate="02AUG03" startDate="01AUG02">
      <ENDDATE>02AUG03</ENDDATE>  
 </QUERY>
 <RESULTSET>
 </RESULTSET>
</REQUEST>
 
Je veux recuperer l'attribut pour le mettre dans un Textbox je fait en XSL:
<td width="50" height="25"> <input name="frm" class="tf_normal" style="WIDTH: 77px; "><xsl:attribute name="value"><xsl:value-of select="./REQUEST/QUERY[@carrierCodeSender]"/></xsl:attribute></input></td>
 
 
Le prob c que ca ne fait rien pourquoi?


 
quel attribut veux tu récupérer, y en a plusieurs, en plus, c'est faux, ta condition Xpath [@carrierCodeSender] n'existe pas, ca doit être [@CodeSender], en plus, ici, ca ne te retournerai pas un attribut, mais le noeud QUERY...
Finalement, il faut savoir de quel noeud tu extrait ce morceau XSL...
 
colle le code complet, ou au moins, le sous ensemble <xsl:apply-templates...>


Message édité par chocoboy le 21-11-2003 à 16:46:17
n°574391
PETOZAK
Posté le 24-11-2003 à 11:02:53  profilanswer
 

au fait mon XML est simple pour QUERY il n'y a qu'un noueud de ce type et je pense pas que le fqit qui y 'ait plusieurs attribut soit un prob, non?
je te colle le XSL:
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 version="1.0"
 >
 
<xsl:output method="html"/>
 
 
<xsl:template match="/">
 
<HTML>
 
 
<HEAD>
<LINK HREF="./css/1aintranets.css" TYPE="text/css" REL="stylesheet"/>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="./js/check.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="./js/Display_Control.js"></SCRIPT>
</HEAD>
 
 
<body>
 
 
<FORM Action="History.jsp" method="POST">
  <TABLE width="630"  height="49" border="0" rules="groups">
    <TR class="InterfaceHeader">
      <TD width="131" ><font class="InterfaceHeader_SubText">From</font></TD>
      <TD width="131" ><font class="InterfaceHeader_SubText">To</font></TD>
      <TD width="79" ><font class="InterfaceHeader_SubText">Sort by</font></TD>
      <TD colspan="2" ><font class="InterfaceHeader_SubText">Sort Order </font></TD>
      </TR>
    <TR valign="top">
      <TD height="28" valign="top" >
        <table width="98"   border="0" cellpadding="0" cellspacing="0">
          <tr valign="baseline">
            <td width="50" height="25"> <input name="frm" class="tf_normal" style="WIDTH: 77px; "><xsl:attribute name="value">toto<xsl:value-of select="./REQUEST/QUERY[@carrierCodeSender]"/></xsl:attribute></input></td>
            <td width="57"><button class="CalButton" onClick="ShowCalendar(IndexVal)" IndexVal="frm"/></td>
          </tr>
        </table></TD>
      <TD valign="top" > <table width="98"  border="0" cellpadding="0" cellspacing="0">
          <tr valign="baseline">
            <td width="50"><input name="to" class="tf_normal" style="WIDTH: 77px; " /></td>
            <td width="57"><button class="CalButton" onClick="ShowCalendar(IndexVal)" IndexVal="to" /></td>
          </tr>
        </table></TD>
      <TD > <select style="WIDTH: 79px" name="Sorttype">
          <option value="T_IN"  selected="true">Date</option>
          <option value="REQUESTER">Airline</option>
          <option value="USER_ID">User</option>
          <option value="MSG_TYPE">Message</option>
          <option value="UPD_TYPE">Type</option>
          <option value="FLIGHT">Flight</option>
          <option value="Res">Response</option>
        </select></TD>
      <TD width="92" ><font class="InterfaceHeader_SubText">
        <INPUT type="radio" value="asc" name="ASCDESC" checked="true"/>
        Ascending</font></TD>
      <TD width="108" > <INPUT type="radio" value="desc" name="ASCDESC"/> <font class="InterfaceHeader_SubText">Descending</font></TD>
      <TD width="53"><button type="submit" id="New" class="InterfaceButton"><img src="img/validation_ic_18a.png" width="18" height="18" align="left"/>Apply</button></TD>
    </TR>
  </TABLE>
</FORM>
 
 
<TABLE  width="61%" height="31" border="0">
  <TR class="InterfaceHeader" bgcolor="#99CCFF">
    <TD ><font class="InterfaceHeader_SubText" >Date</font></TD>
    <TD><font class="InterfaceHeader_SubText" >Hour</font></TD>
    <TD><font class="InterfaceHeader_SubText" >A/L</font></TD>
    <TD><font class="InterfaceHeader_SubText">User-ID</font></TD>
    <TD><font class="InterfaceHeader_SubText">Message</font></TD>
    <TD><font class="InterfaceHeader_SubText">Type</font></TD>
    <TD><font class="InterfaceHeader_SubText">Flight</font></TD>
    <TD><font class="InterfaceHeader_SubText">MessageSSIM</font></TD>
    <TD><font class="InterfaceHeader_SubText">Response</font></TD>
  </TR>
 
 
<xsl:apply-templates/>
</TABLE>
 
<TABLE width="404" height="73" cellPadding="20" cellSpacing="0" id="Button_Group">
  <TR>
    <TD width="25%" ><button type="submit" id="ReUse" class="InterfaceButton"><img src="img/redo_ic_18a.png" width="18" height="18" align="left"/>Re-Use</button></TD>
    <TD width="25%"><button type="submit" id="Print" class="InterfaceButton"><img src="img/print_ic_18b.png" width="18" height="18" align="left"/>Print</button></TD>
    <TD width="25%"><button class="InterfaceButton" type="submit" id="New"><img src="img/clear_ic_18a.png" width="18" height="18" align="left"/>Clear</button></TD>
    <td width="25%"><button class="InterfaceButton" type="submit" id="New"><img src="img/help.gif" width="18" height="18" align="left"/>Help</button></td>
  </TR>
</TABLE>
 
</body>
</HTML>
</xsl:template>
 
<xsl:template match="ROW">
 
 
               <TR>
               <xsl:if test="position() mod 2 = 0">
                  <xsl:attribute name="class">InterfaceHeader2</xsl:attribute>
               </xsl:if>
 
        <xsl:for-each select="./.">
 
  <TD><xsl:value-of select="T_IN"/></TD>
  <TD><xsl:value-of select="T_IN"/></TD>
  <TD><xsl:value-of select="REQUESTER"/></TD>
  <TD><xsl:value-of select="USER_ID"/></TD>
  <TD><xsl:value-of select="MSG_TYPE"/></TD>
  <TD><xsl:value-of select="UPD_TYPE"/></TD>
  <TD><xsl:value-of select="CARRIER"/><xsl:value-of select="FLIGHT"/></TD>
                <TD><A style="CURSOR: hand" href="#" class="dfont">See complete</A></TD>
  <TD><xsl:value-of select="RES"/></TD>
 
 </xsl:for-each>
              </TR>
</xsl:template>
 
<xsl:template>
coucou
</xsl:template>
 
 
 
</xsl:stylesheet>


Message édité par PETOZAK le 24-11-2003 à 11:03:30
n°574393
PETOZAK
Posté le 24-11-2003 à 11:04:25  profilanswer
 

mon XML ressemble a ca :
 
 
<REQUEST>
 <QUERY AscDesc="desc" SortType="MSG_TYPE" CodeSender="U" endDate="02AUG03" startDate="01AUG02">
      <ENDDATE>02AUG03</ENDDATE>  
 </QUERY>
 <RESULTSET>
  <ROW></ROW>
  <ROW></ROW>
  <ROW></ROW>
  <ROW></ROW>
   ..
   ...
   ....
   <ROW></ROW>
 </RESULTSET>
</REQUEST>


Message édité par PETOZAK le 24-11-2003 à 11:05:45
n°574423
chocoboy
Posté le 24-11-2003 à 11:25:51  profilanswer
 

PETOZAK a écrit :

mon XML ressemble a ca :
<REQUEST>
 <QUERY AscDesc="desc" SortType="MSG_TYPE" CodeSender="U" endDate="02AUG03" startDate="01AUG02">
      <ENDDATE>02AUG03</ENDDATE>  
 </QUERY>
 </REQUEST>


 
ben tu dis que tu veux récupérer l'attribut...
Or, dans le noeud QUERY, AscDesc, SortType, CodeSender,endDate, startDate sont des Attributs...
Mais peut être est ce la valeur du neoeud ENDDATE que tu veux récupérer ???
 
ton XSL, c'est normal qu'il ramène rien puisque le QUERY n'a pas de valeur

n°574575
PETOZAK
Posté le 24-11-2003 à 14:07:01  profilanswer
 

au fait chocoboy le prob est super simple :recuperer la valeur d'un attribut :(
<REQUEST>
 <QUERY AscDesc="desc" SortType="MSG_TYPE" CodeSender="U" endDate="02AUG03" startDate="01AUG02">  
 </QUERY>
 </REQUEST>
Voila le bon XML (endDate c t pour voir si il recuperer le noeud et oui il le fait bien mais ce que je veux c alleger mon XML en recuperant les attributs)

n°574576
PETOZAK
Posté le 24-11-2003 à 14:08:06  profilanswer
 

et tu pense que c'est bon ca?:
 <QUERY AscDesc="desc" SortType="MSG_TYPE" CodeSender="U" endDate="02AUG03" startDate="01AUG02"/>  

mood
Publicité
Posté le 24-11-2003 à 14:08:06  profilanswer
 

n°574578
walli
Posté le 24-11-2003 à 14:08:46  profilanswer
 

t'as essayé le bout de code que j'ai filé plus haut ?

n°574585
PETOZAK
Posté le 24-11-2003 à 14:16:23  profilanswer
 

oui mais ca donne ca:
<INPUT name="frm" class="tf_normal" width="77px" value="REQUEST/QUERY[@CodeSender]">
ce qui est pas bon

n°574588
PETOZAK
Posté le 24-11-2003 à 14:17:17  profilanswer
 

ce qui faut c ca:
<INPUT name="frm" class="tf_normal" width="77px" value="U">

n°574610
walli
Posté le 24-11-2003 à 14:49:22  profilanswer
 

j'avais oublié le <xsl:value-of select="REQUEST/QUERY[@CodeSender]"/> :ange:

Code :
  1. ...
  2. <xsl:attribute name="value"><xsl:value-of select="./REQUEST/QUERY[@CodeSender]"/></xsl:attribute>
  3. ...

n°574649
PETOZAK
Posté le 24-11-2003 à 15:15:46  profilanswer
 

ca marche pas :( ca renvoit  rien

n°574650
chocoboy
Posté le 24-11-2003 à 15:16:09  profilanswer
 

PETOZAK a écrit :

oui mais ca donne ca:
<INPUT name="frm" class="tf_normal" width="77px" value="REQUEST/QUERY[@CodeSender]">
ce qui est pas bon


 
 :??:  :lol:  
 
fallait le dire que c'était @CodeSender que tu voulais récupérer !!!!!
 
quand tu le met entre crochets [@CodeSender], tu fais un Xpath de condition en fait,  
 
en tapant REQUEST/QUERY[@CodeSender], ca veut dire que tu récupère non pas l'attribute, mais le noeud QUERY, dont l'attribute @CodeSender n'est pas vide...
 
tu dois faire ca plutot :
 
REQUEST/QUERY/@CodeSender
 
sois plus clair dans tes questions

n°574658
PETOZAK
Posté le 24-11-2003 à 15:23:40  profilanswer
 

<input name="frm" class="tf_normal" style="WIDTH: 77px; ">
            <xsl:attribute name="value"><xsl:value-of select="REQUEST/QUERY/@CodeSender"/></xsl:attribute></input>
ca ne marche pas choco?
ca renvoit rien

n°574659
PETOZAK
Posté le 24-11-2003 à 15:24:37  profilanswer
 

c bien ca que tu dis?

n°574665
walli
Posté le 24-11-2003 à 15:27:43  profilanswer
 

chocoboy a écrit :


 
tu dois faire ca plutot :
 
REQUEST/QUERY/@CodeSender


 
[:wam] mais que je suis con, j'avais meme pas tilté la dessus  :cry:  :cry:

n°574698
PETOZAK
Posté le 24-11-2003 à 15:47:36  profilanswer
 

c marrant mais ca marche pas :)

n°574774
chocoboy
Posté le 24-11-2003 à 16:27:45  profilanswer
 

PETOZAK a écrit :

c marrant mais ca marche pas :)


 
ce code :
 
<REQUEST>
 <QUERY AscDesc="desc" SortType="MSG_TYPE" CodeSender="U" endDate="02AUG03" startDate="01AUG02">  
 </QUERY>
</REQUEST>
 
<REQUEST> : c'est bien ta racine ???

n°574781
chocoboy
Posté le 24-11-2003 à 16:29:44  profilanswer
 

chocoboy a écrit :


 
ce code :
 
<REQUEST>
 <QUERY AscDesc="desc" SortType="MSG_TYPE" CodeSender="U" endDate="02AUG03" startDate="01AUG02">  
 </QUERY>
</REQUEST>
 
<REQUEST> : c'est bien ta racine ???


 
si c'est le cas, ton <xsl:template match="/">
te fait déjà rentrer dans <REQUEST> et donc, modifie ton code :  
 
<input name="frm" class="tf_normal" style="WIDTH: 77px; ">  
           <xsl:attribute name="value"><xsl:value-of select="QUERY/@CodeSender"/></xsl:attribute></input>

n°574783
chocoboy
Posté le 24-11-2003 à 16:31:00  profilanswer
 

mais ton code XSL est pas très propre...
 
si c'est comme je l'ai compris, crées un <xsl:template...> pour QUERY, comme tu l'as fait pour ROW

n°574883
PETOZAK
Posté le 24-11-2003 à 17:25:04  profilanswer
 

ca donne toujours rien malheureusement y a peut etre un prob avec ma version de XSLT pour Java:
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
 
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.Result;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
 
tu transforme ton XML+XSL comment toi?

n°574897
chocoboy
Posté le 24-11-2003 à 17:41:15  profilanswer
 

PETOZAK a écrit :

ca donne toujours rien malheureusement y a peut etre un prob avec ma version de XSLT pour Java:
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
 
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.Result;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
 
tu transforme ton XML+XSL comment toi?
 


 
pour être sur que l'erreur vient de ton code,
charge Instant Saxon (voir google)
 
puis sous dos, tapes "saxon fichier.xml fichier.xsl>fichier.html" (par exemple), ca te permettra de voir ou ca cloche dans ton code

n°574909
PETOZAK
Posté le 24-11-2003 à 17:49:20  profilanswer
 

merci

n°574923
chocoboy
Posté le 24-11-2003 à 17:56:01  profilanswer
 


 
un conseil, si tu débute et que tu souhaite tester un morceau de code... teste "petit"...
 
fais simplement un petit morceau de <xsl:template...> qui affiche simplement le champ voulu... pour l'isoler du reste de ton prog...

n°575389
PETOZAK
Posté le 25-11-2003 à 09:51:58  profilanswer
 

au fait tu as deja essaye de recuperer la valeur d'attribut ou tu travail systematiquementen profondeur avec CHILD?

n°575463
PETOZAK
Posté le 25-11-2003 à 11:04:31  profilanswer
 

Au fait Merci beaucoup Chocoboy (et les autres) pour ta patience et ta gentillesse ca marche finalement et comme tu as dis j'ai epure le code avec des templates structures :)

n°575474
PETOZAK
Posté le 25-11-2003 à 11:17:17  profilanswer
 

Personne ne saurait quel moteur XSLT utilise saxon parce que j'ai pas les memes resultats avec:
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
 
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.Result;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  recuperer un attribut d'un noeud sans child

 

Sujets relatifs
Récupérer du texte d'une page webRécupérer des informations sur les fichiers en asp
récupérer le résultat d'un programme dans un .batpeut on recuperer la "value" d'un div ?
Récupérer les infos des fichiers ???Récupérer des données d'une page HTML générée par un autre domaine
[C]Comment recuperer un caractere des qu'il est saisi au clavier?[js] comment récupérer la valeur d'un textarea
[JAVA] Comment récupérer l'année en cours dans une variable ?récupérer le contenu d'une page php dans une page html
Plus de sujets relatifs à : recuperer un attribut d'un noeud sans child


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR