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

  FORUM HardWare.fr
  Programmation
  XML/XSL

  Boucle particulière

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Boucle particulière

n°1603582
SauCiSSoN1​3
Posté le 24-08-2007 à 14:30:52  profilanswer
 

Bonjour.
 
Je voudrais afficher des tags dans un input text (à la suite, séparé par un espace).
Je récupère ces tags de mon xml evidement, et je dois donc les afficher dans le value="les tags" de mon input.
for-each n'est pas utilisable dans ce cas la.
 
Esque quelqu'un aurait une idée pour faire ça ?


Message édité par SauCiSSoN13 le 24-08-2007 à 14:31:11
mood
Publicité
Posté le 24-08-2007 à 14:30:52  profilanswer
 

n°1603610
durkheim
Posté le 24-08-2007 à 14:52:59  profilanswer
 

Si je comprends bien, en entrée tu as un fichier xml que tu processes avec du xsl.
Tu veux afficher quelque chose comme ça :

Code :
  1. <input type="text" value="les tags" />
 

Je suppose que la collection dont tu parles est la collection des tags, que tu voudrais parser avec le for-each.
Pourquoi ne pas faire quelque chose comme suit? (grosso modo hein, à l'erreur de syntaxe près):

 
Code :
  1. <xsl:text>&lt;input type="text" value="</xsl:text> <!--La tu affiches le debut de la balise-->
  2. <xsl:for-each select="tags">
  3. <xs:value-of select="."/><!--Ici tu affiches les tags-->
  4. </xsl:for-each>
  5. <xsl:text>" /&gt;</xsl:text> <!--Ici tu affiches la fin de la balise-->


Message édité par durkheim le 24-08-2007 à 14:53:07
n°1603618
MagicBuzz
Posté le 24-08-2007 à 15:09:25  profilanswer
 

Je dirais plutôt qu'il a un fichier XML :

Code :
  1. <root>
  2.  <line id="1">plop</line>
  3.  <line id="2">prout</prout>
  4. </root>


Et qu'il veut générer ça :

Code :
  1. <input type="text" value="&lt;line id=&guil;1&guil;&gt;plop&lt;/line&gt;,&lt;line id=&guil;2&guil;&gt;prout&lt;/line&gt;"/>


Si c'est ça, bon courrage :D
 
Ca se fait très simplement avec un JS ou autre langage de programmation, mais en XSL...

n°1603620
SauCiSSoN1​3
Posté le 24-08-2007 à 15:15:21  profilanswer
 

J'ai pas trop compris ce que tu décris MagicBuzz :s
J'ai simplement dans mon xml ça :
<tag>nomdutag</tag>
<tag>nomdutag2</tag>
etc...
 
et avec xsl je veux que dans mon input text s'affiche "nomdutag1 nomdutag2 etc.."
 
 
Je vais tester ta proposition durkheim.


Message édité par SauCiSSoN13 le 24-08-2007 à 15:15:46
n°1603628
MagicBuzz
Posté le 24-08-2007 à 15:23:10  profilanswer
 

ah, tu veux juste le contenu ?
 
ben c'est facile ça par contre...
et c'est bien un foreach qui te permettra de le faire.
 
le seul piège, c'est pour ne pas mettre une virgule en trop au début ou à la fin, mais c'est vraiment peanuts...
 
ça fais un moment que j'ai pas fait de XSL et ça me saoule de chercher, mais clairement ça se faire vraiment facilement.
 
http://www.w3schools.com/

n°1603637
SauCiSSoN1​3
Posté le 24-08-2007 à 15:32:06  profilanswer
 

Si je post ici c'est que je n'arrive pas a trouver tous seul :/

n°1603640
durkheim
Posté le 24-08-2007 à 15:33:56  profilanswer
 

A propos de la virgule en trop, un test sur la propriété position() suffit.

n°1603672
MagicBuzz
Posté le 24-08-2007 à 15:49:54  profilanswer
 

d'où le lien que je t'ai filé, qui détaille chaque élément de XSL, avec des exemple plutôt parlants...

n°1603694
MagicBuzz
Posté le 24-08-2007 à 15:59:10  profilanswer
 

Bon, relourdage de voir des gens sans volonté (vendredi trolly, et magicbuzz qui se fait chier et est de mauvaise humeur car il veut aller en we)

Code :
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <?xml-stylesheet type="text/xsl" href="tags.xsl"?>
  3. <tags>
  4.  <tag>toto</tag>
  5.  <tag>titi</tag>
  6.  <tag>tata</tag>
  7. </tags>


 

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.  <xsl:template match="/">
  4.    <html>
  5.      <head>
  6.        <title>Test de transformation XSL</title>
  7.      </head>
  8.      <body>
  9.        <h1>Test de rendu des tags</h1>
  10.        <form name="form1" method="post" action=".">
  11.          <label for="textbox1">Liste des tags</label>
  12.          <input type="text" id="textbox1">
  13.            <xsl:attribute name="value">
  14.              <xsl:for-each select="/tags/tag">
  15.                <xsl:if test="position() &gt; 1">,</xsl:if>
  16.                <xsl:value-of select="."/>
  17.              </xsl:for-each>
  18.            </xsl:attribute>
  19.          </input>
  20.        </form>
  21.      </body>
  22.    </html>
  23.  </xsl:template>
  24. </xsl:stylesheet>


Message édité par MagicBuzz le 24-08-2007 à 16:05:48
n°1603697
durkheim
Posté le 24-08-2007 à 16:02:50  profilanswer
 

BAh oui mais lui il le voulait dans l'attribut value de la balise input.

mood
Publicité
Posté le 24-08-2007 à 16:02:50  profilanswer
 

n°1603700
MagicBuzz
Posté le 24-08-2007 à 16:05:24  profilanswer
 

et là il est où à ton avis :o
 
<xsl:attribute name="value"> c'est du boudin à la fraise ? ;)


Message édité par MagicBuzz le 24-08-2007 à 16:06:46
n°1603765
durkheim
Posté le 24-08-2007 à 17:29:51  profilanswer
 

Ahhhhh en effet, c'est plus propre comme ça. Avais pas compris, excuz.

n°1604317
SauCiSSoN1​3
Posté le 27-08-2007 à 11:26:36  profilanswer
 

Merci beaucoup ça marche impec.


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

  Boucle particulière

 

Sujets relatifs
Boucle (for) et XMLIncompatibilité de type avec une boucle For
[c] Question sur une boucle do...whileproblème boucle until
[Javascript] Boucle for [résolu]Problème boucle à droite!
boucle if après findBoucle for avec un pas
Faire une boucle qui dure quelques secondes[PHP] Problème de boucle et menu
Plus de sujets relatifs à : Boucle particulière


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